为什么未定义的值在javascript中被视为有限而null不是?
这是一个非常基本的问题,它挫败了我的googlefoo(噪音太大)。
isFinite(undefined); // false
isFinite(null); // true
我不明白,因为我希望以相同的方式处理null和undefined。
答案 0 :(得分:6)
这是因为Number(null) === 0
。
答案 1 :(得分:1)
isFinite(数字)
如果参数强制转换为NaN,+∞或-∞,则返回false,否则返回true。
isFinite
使用Number()
和
Number(undefined); //== NaN
Number(null); //== 0
这就是undefined为false的原因,isFinite为null。
如果您尝试:
isFinite(!undefined); // true
因为undefined是NaN并且在否定它时它转换为1是有限的。