【发布时间】:2010-09-12 01:08:23
【问题描述】:
JS 中的这段代码给了我一个弹出窗口,说“我认为 null 是一个数字”,我觉得这有点令人不安。我错过了什么?
if (isNaN(null)) {
alert("null is not a number");
} else {
alert("i think null is a number");
}
我使用的是 Firefox 3。这是浏览器的错误吗?
其他测试:
console.log(null == NaN); // false
console.log(isNaN("text")); // true
console.log(NaN == "text"); // false
所以,问题似乎不是与 NaN 的精确比较?
编辑: 现在问题已经得到解答,我已经清理了我的帖子,以便为存档提供更好的版本。然而,这使得一些 cmets 甚至一些答案有点难以理解。不要责怪他们的作者。我改变的事情包括:
- 删除了一条说明我首先通过还原其含义而搞砸了标题
- 较早的答案表明我没有足够清楚地说明为什么我认为这种行为很奇怪,因此我添加了检查字符串并进行手动比较的示例。
【问题讨论】:
-
你不是说“为什么 isNaN(null) == false”?
-
根据您的代码,如果 isnan(null) 显示“我认为 null 是数字”,则返回 false(null 不是“不是数字”)。
-
改用
Number.isNaN。
标签: javascript