これは、 が数字であることfalse
を意味します。""
alert(isNaN(""));
これは、 が数値ではなく、変換できないことをNaN
意味します。""
alert(parseFloat(""));
テストしたときは数字なので、2番目のコードが変換""
されることを期待していましたが、間違っていました! 私は気が狂っていますか、それとも何かを逃しただけですか?0
""
IsNaN
これは、 が数字であることfalse
を意味します。""
alert(isNaN(""));
これは、 が数値ではなく、変換できないことをNaN
意味します。""
alert(parseFloat(""));
テストしたときは数字なので、2番目のコードが変換""
されることを期待していましたが、間違っていました! 私は気が狂っていますか、それとも何かを逃しただけですか?0
""
IsNaN
parseFloat
文字列から数値を解析しようとしますが、asは引数をチェックする前isNaN
に数値に変換します。
Number("") //0 http://ecma-international.org/ecma-262/5.1/#sec-9.3.1
parseFloat("") //NaN http://ecma-international.org/ecma-262/5.1/#sec-15.1.2.3
どうやらこれは「壊れている」または「混乱している」ので、仕様から:
ECMAScriptコードが値XがNaNであるかどうかをテストするための信頼できる方法は、X!== Xの形式の式です。結果は、XがNaNである場合にのみ真になります。
0 !== 0 // false
NaN !== NaN //true
function isExactlyNaN(x) {
return x !== x;
}
isNaN
数値タイプに変換し、値が特殊数値NaNであるかどうかを確認します。
数値に変換された空の文字列は0
(+"" === 0
)であり、0
そうではないNaN
のでfalse
。
ただし、 parseFloatは、数値タイプへの単純な変換よりも複雑でありNaN
、空の文字列(parseFloat("") === NaN
)を返します。
ないNaN
ことは、数であることと同じではありません。それは、あなたが特別な価値を持っていないことを意味しますNaN
。
またはNaN
、JS 言語の難解な変換規則によって変換可能なもの。
この動作を理解するには、セマンティクスを理解することが重要です。
isNaN
値を数値に強制変換できないかどうかをチェックします。値で呼び出すとfalseが返される場合は、Number(value)
有効な数値が返されることを意味します。
parseFloat
文字列から数値を解析します。文字列がどの数値でも始まらない場合は、NaN
解析する数値が見つからなかったため、を返します。
プログラマーは、ほとんどの場合、を使用する必要があるときに、使いすぎて強制parseInt
する傾向があります。これは、より厳密で、それほど混乱することはありません。parseFloat
Number
Javascript は空の文字列を 0 として解釈し、isNaN テストに失敗します。parseFloat は空の文字列の数値を解析しようとしますが、失敗して NaN を返します。