2016-12-11 9 views
-2

私はJavascriptの仕組みを学んでいるし、isNaN()でバグを見つけたと思う。私はisNaN()でバグを発見したと思う。

ここにテストコードがあります。

var x = "1000"; 

Answer = isNaN(x); 
console.log(Answer); 

コンソールログは、Javascriptが数字として「1000」を参照することを示す「false」を返します。私は" "の中の何かが文字列とみなされたと思った。明らかに必ずしもそうではありません。私が間違っていると、誰かが私をまっすぐにすることができるいくつかの洞察力を持っているかもしれない

+0

NaNの浮動小数点数の表現に関して、非常に特別な意味を持っています。 isNaNはそれだけをテストします。 – Thilo

+0

Dangitありがとう!私はisNaNを探して、そのスレッドは出てこなかった。そのスレッドには答えがあります。 – DR01D

+0

投稿を読んだことはありませんが、JavaScriptが文字列を数字として認識していることは間違いありません。 – alexr101

答えて

5

明らかに、それは機能であり、バグではありません。

isNaN関数の引数がNumber型でない場合、値は最初にNumberに強制されます。結果として得られた値は、それがNaNであるかどうかを判定するためにテストされる。

出典:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN

+0

もう一つ注目すべき違いは、「Number.isNaN」はこの強制をしません。 'isNaN( 'A')=== true'、' Number.isNaN( 'A')=== false'です。 – gyre

関連する問題