FC2ブログ

JSのisNaN

先日久々にJavaScriptを書いたのですが、意外なことで少しハマってしまいました。

数値チェック用に、isNaNというビルトイン関数があったので、何の気もなく使ってみました。

NaNはnot a numberの略で、つまり数値以外の場合にtrueになる関数(のはず)でした。

ところが、出来上がったものの処理がイレギュラーなので、原因を詳しく調査していたところ・・・。

isNaNは半角スペースもfalse(数値扱い)になるらしい(汗)。
(ちなみに空文字も同様だそうです。)

ググって見ればこれ、結構ポピュラーな仕様?のようですが、なぜスペースも数値扱いなのか、実装を見てみたい気もします・・・。

おとなしく正規表現で書いて解決しました(^^;)。

コメント

No title

 いかにもプログラム慣れしてるとやりそうな事ですね。
 最近C#で描き始めたけど、まじめに調べずに適当に関数を使って痛い目を見る・・・これからやりそうです。
 なんだかんだ言っても新しい言語は面倒ですね~

Limit Point Softwareというところに20ドル寄付しているのですが、ライセンスキーが届きません。( T_T)\(^-^ )
いったい、アメリカはどうなっているのでしょう?

No title

24時間以上たってもライセンスキーが届きません。
PayPalに苦情を申し立てました。

Re: No title

>Mooさん

JSは不思議な挙動をするビルトイン関数が多いですね。
parseInt('12345abc')とかすると、12345が返ってきたりするので、
うっかりisNaN(parseInt(input))とかすると、
スカスカになったりします(笑^^;)
こういう点ではDelphiはかなりしっかり出来ていますよね。

そういえば私はC#はまだ縁がないなあ・・・。

>日本語化さん

それは心配ですね・・・。
ライセンスキーはメールで届くのですか??
その場合、念のためですが、スパムフィルタに食われていないかは
もうチェックしておきました??
(迷惑メールフォルダとかそういうフォルダがあればその中身とかです)

英語だけのメールの場合、スパムフィルタが間違って食ってしまう可能性が多いようです。
あと、ライセンスキーがEXEの場合、アンチウイルスソフトが食う場合もあるようです。

これらを調べて、なおかつもう少し待っても来てなかったら、開発元に確認した方が良いでしょうね。
ともかく無事解決されることを願っています!

コメントの投稿

トラックバック


この記事にトラックバックする(FC2ブログユーザー)