1

为什么 undefined 的值在 javascript 中被认为是有限的,而 null 不是?

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

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

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

4

2 回答 2

7

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

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

于 2013-10-08T17:21:52.027 回答
1

是有限的(数字)

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

isFinite使用和转换输入Number()

Number(undefined); //== NaN
Number(null); //== 0

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

如果你试试:

isFinite(!undefined); // true

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

于 2014-03-19T06:29:37.723 回答