テキストと数値の取り扱い比較

JavaScriptにおいて、文字列と数値を誤って処理した場合の影響を比較検証

テキスト 表示 isNaN 空判定 空否定 0判定 0否定 0超過 結合 計算  
isNaN(s) (s == "") (s != "") (s == 0) (s != 0) (s > 0) s + "1" s + 1 isNaNは数値でない場合にtrue、数値ならfalse
文字列 不明 不明 不明 不明 不明 不明 不明 不明 不明 s = document.form1.textfield.value;
数値化1 不明 不明 不明 不明 不明 不明 不明 不明 不明 s = parseInt(s); 整数値
数値化2 不明 不明 不明 不明 不明 不明 不明 不明 不明 s = eval(s);  計算式
 
ブラウザ 表示 isNaN 空判定 空否定 0判定 0否定 0超過 結合 計算 IE7,IE8,Forefox 3.5, 4.0
abc abc true false true false true false abc1 abc1 数値化に失敗した後、結合、計算にもその影響がそのまま残っている。
NaN true false true false true false NaN1 NaN
undefined true false true false true false undefined1 NaN
 
12.3 12.3 false false true false true true 12.31 12.31 数値化しなくても数値として正常に判定されている。ただし、計算に違いが出ている。
12 false false true false true true 121 13
12.3 false false true false true true 12.31 13.3
 
5-4 5-4 true false true false true false 12.31 12.31 表示の段階で、数値化1では文字列までの数字を取得、数値化2は式として入力されている。
5 false false true false true true 121 13
1 false false true false true true 12.31 13.3
 
""   false true false true false false 文字列の場合、0の数値化1と同じ結果。isNaNにてfalse(数値)となり、0判定もtrueとして、数値の0と同じ扱い。結合、計算においては文字列として扱われている。
NaN true false true false true false NaN1 NaN
undefined true false true false true false undefined1 NaN
 
" "   false false true true false false 空白。文字列だがisNaNでfalse、0判定でtrueとなっている。0と同じ。
NaN true false true false true false NaN1 NaN
undefined true false true false true false undefined1 NaN
 
0 0 false false true true false false 01 01 文字列でもsiNaNは数値としてfalseを示す。そのため0判定でもtrueとなる。
0 false true false true false false 01 1
0 false true false true false false 01 1

戻る