2009年2月12日 木曜日 23:20:34
javascriptでの値の比較結果を表にまとめてみた
![]()
この間のNaNの判定で、ちょっとJavascriptの値の比較を整理しときたいと思ったので表にまとめた。
NaNってホント独特なんだなぁ・・・( ̄□ ̄;)
比較
簡単な比較。
PHPでいう「2a問題」はないけど、型を意識しない比較。
falseとかは結構広範囲に対応できてしまう。
ちなみにNaNはすべてにおいてfalse。
自分自身でさえも・・・(>_<)
| 比較(==) | true | false | null | undefined | NaN | “” | 0 | “0″ | “0a” |
|---|---|---|---|---|---|---|---|---|---|
| true | true | false | false | false | false | false | false | false | false |
| false | false | true | false | false | false | true | true | true | false |
| null | false | false | true | true | false | false | false | false | false |
| undefined | false | false | true | true | false | false | false | false | false |
| NaN | false | false | false | false | false | false | false | false | false |
| “” | false | true | false | false | false | true | true | false | false |
| 0 | false | true | false | false | false | true | true | true | false |
| 0 | false | true | false | false | false | false | true | true | false |
| “0a” | false | false | false | false | false | false | false | false | true |
型比較
より厳密な比較(*°∀°)=3
簡単の比較のようにfalseは柔軟でなくなる。
相変わらずNaNはすべてに対して偽。
| 型比較(===) | true | false | null | undefined | NaN | “” | 0 | “0″ | “0a” |
|---|---|---|---|---|---|---|---|---|---|
| true | true | false | false | false | false | false | false | false | false |
| false | false | true | false | false | false | false | false | false | false |
| null | false | false | true | false | false | false | false | false | false |
| undefined | false | false | false | true | false | false | false | false | false |
| NaN | false | false | false | false | false | false | false | false | false |
| “” | false | false | false | false | false | true | false | false | false |
| 0 | false | false | false | false | false | false | true | false | false |
| 0 | false | false | false | false | false | false | false | true | false |
| “0a” | false | false | false | false | false | false | false | false | true |
正確な各比較結果を確認できるように、実際にJavascriptを走らせる比較表を置いときます。
おまけに数値のオーバーフローをちょこっと
phpの時もそうだけど、やっぱり数値のオーバーフローは発生する。
「11111111111111111」を境に結果がおかしくなったりし始める。
とにかく当てにならない(>_<);;;
- 「11111111111111110」 は「11111111111111110」
[実行して確認] - 「11111111111111111」 は「11111111111111112」
[実行して確認] - 「11111111111111112」 は「11111111111111112」・・・ってあれ?
[実行して確認] - 「11111111111111113」 は「11111111111111112」
[実行して確認] - 「11111111111111124」 は「11111111111111124」・・・正常???
[実行して確認] - 「11111111111111125」 は「11111111111111124」・・・ってオイオイ( ̄□ ̄;)
[実行して確認]
ついでに、parseIntによる変換。
いろいろ抑えとかないと(´・ω・`)
関連情報:
javascriptでNaNを判定してみる
JavascriptでindexOfとmatchの速度がちょっと気になった
[MDIEスクリプト] select2zip.jsを更新
トラックバック URL :
コメント (0)