gpt4 book ai didi

javascript - 为什么 isNaN([3]) 在 JavaScript 中为假?

转载 作者:搜寻专家 更新时间:2023-11-01 04:56:09 25 4
gpt4 key购买 nike

我使用Chrome浏览器60.x,测试代码isNaN([3])。结果是false,但我无法理解。

[3] 是一个数组,它不是空的。我认为[3]是数组对象,不是数字。

否则 isNaN(["ABC"]) 的结果为 trueisNaN([1,2,3]) 的另一个结果是 true。所以我猜 javascript 引擎强制将数组更改为数组具有单个元素的数字。

请告诉我数组参数的 isNaN 函数发生了什么。

引用 1:Why is isNaN(null) == false in JS?
引用 2:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN


[编辑] 谢谢大家的回答。

我理解 javascript 在比较之前隐式解析了值。

我在阅读 Nina Scholz 的回答时发现了一个有用的链接。
对照表:http://dorey.github.io/JavaScript-Equality-Table/

最佳答案

当您使用 isNaN 时,它会尝试将您的输入值解析为 number,然后检查它是否为 NaN

查看一些示例。

对于包含一个项目的数组,Number() 函数返回一个对象,该对象实际上将第一个项目保存为一个值(参见 console.log)。对于许多项,它返回 NaN,因此您得到 isNaN 的结果 -> true

const a = new Number([3]);
console.log(`a is ${a}`);
console.log(`isNaN(a) - ${isNaN(a)}`);


const b = new Number([3,4,5]);
console.log(`b is ${b}`);
console.log(`isNaN(b) - ${isNaN(b)}`);

关于javascript - 为什么 isNaN([3]) 在 JavaScript 中为假?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46031676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com