为什么是isFinite(undefined)!= isFinite(null)?

时间:2013-10-08 17:19:12

标签: javascript null undefined

为什么未定义的值在javascript中被视为有限而null不是?

这是一个非常基本的问题,它挫败了我的googlefoo(噪音太大)。

isFinite(undefined); // false
isFinite(null); // true

我不明白,因为我希望以相同的方式处理null和undefined。

2 个答案:

答案 0 :(得分:6)

这是因为Number(null) === 0

http://es5.github.io/#x9.3

答案 1 :(得分:1)

  

isFinite(数字)

     

如果参数强制转换为NaN,+∞或-∞,则返回false,否则返回true。

isFinite使用Number()

转换输入
Number(undefined); //== NaN
Number(null); //== 0

这就是undefined为false的原因,isFinite为null。

如果您尝试:

isFinite(!undefined); // true

因为undefined是NaN并且在否定它时它转换为1是有限的。