isNum() 関数とdePlusSign() 関数の評価ページ

Input

下の inStr 欄に " -56e+3", "234.55 ", "0xFD", " +10", などのような数字を入力し、
実行ボタンを押して下さい。数字の前後に空白文字($20)を含めても構いません。
※数字(整数値)が"0"で始まると8進数、"0x"で始まると16進数とみなされます。
しかし、"0.33" のような小数値は、"0"で始まっても10進数とみなされます。

inStr =

Output

isNum(inStr) =
dePlusSign(inStr) =
eval(dePlusSign(inStr)) =
eval(inStr) =
Note1
inStr が[+56]のようなプラス符号付きの数字の場合、Netscape Navigator 3.0 (NN3)では eval()でエラーが発生します。 [-56]のようなマイナス符号の場合にはエラーになりません。
なお、この現象はNN3のバグのようで、NN4.78ではプラス符号付きの数字でもエラーになりません。
Note2:
Microsfot Internet Explorer 3.xx (MSIE3) の eval() は寛容すぎて、[-+-55]のような異常な文字や、[55e]のような指数部の欠落した数値であっても、エラーを指摘しません。多分バグでしょう。
[-+-55]に関しては、MSIE3だけのバグでなく、MSIE4, MSIE5も同様にバグっています。
[55e]の側は少なくともMSIE5では直っています(MSIE4は未調査)。
それだけかと思ったら、NN4.78もMSIEに倣って?[-+-55]に関してエラーを指摘せずに変換するように改悪されていました。Opera7.11, NN7.1, Mozilla Firefox 1.0も同様にバグっています。MSIEのJScriptでもコピーしたのかと思うような状況には呆れます。
もし、NN3とMSIE3をお持ちならば、結果を比べてみて下さい。また isNum(), dePlusSign() がブラウザに依存せず安定であり、isNum()trueが得られた時だけ eval(dePlusSign())を使えば、エラーを回避できる事が分かると思います。