JavaScript如何处理数字(未定义)?

JavaScript如何处理数字(未定义)?,javascript,types,undefined,v8,nan,Javascript,Types,Undefined,V8,Nan,最近,当我发现Number(未定义)等于NaN时,出于厌倦,我考虑定义一个函数来复制isNaN的功能,但是如果你这样做了Number(未定义)==NaN你会得到false` 我甚至尝试了(typeof Number(未定义))==(typeof NaN),返回true JavaScript在这里做什么 常数NaN永远不等于任何东西,包括NaN。NaN的typeof的值是“number”,因为NaN是一个数字常量 Number(未定义)的值为NaN。您可以使用isNaN()来验证,或者只需: va

最近,当我发现
Number(未定义)
等于
NaN
时,出于厌倦,我考虑定义一个函数来复制isNaN的功能,但是如果你这样做了Number(未定义)==NaN
你会得到
false`

我甚至尝试了
(typeof Number(未定义))==(typeof NaN)
,返回
true


JavaScript在这里做什么

常数
NaN
永远不等于任何东西,包括
NaN
。NaN的
typeof
的值是“number”,因为
NaN
是一个数字常量

Number(未定义)
的值为
NaN
。您可以使用
isNaN()
来验证,或者只需:

var x = Number(undefined);
if (x !== x) alert("It's NaN!");

(NaN==NaN)===false
同样,在调试诸如
(数字类型(未定义))===(NaN类型)
之类的东西时,只需分别记录
===
的两侧就可以了,您会看到两者都返回
“数字”
。(是的,
typeof NaN==“number”
)@Cerbrus是的,我知道
typeof NaN==“number”
,但我不知道
NaN
从来都不等于任何东西。p自己找出了最后一行:“当我发现时,
number(未定义)
等于
NaN
”;-)@也许他会相信我而不是他自己:)说得好,有时候,外面的“是的,没错”会有帮助!要补充的是,虽然NaN的类型是,但是NaN的实例是,false。JavaScript WAT@tkoomzaaskz这是真的,但是
17个数字实例
也是
false
NaN
17
都不是对象实例。