为什么在JavaScript中isNN([3])是假的?

Ivo*_*rus 4 javascript arrays

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

[3]是一个数组,并且不为空。我认为[3]是数组对象,而不是数字。

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

请让我知道isNaN数组参数发生了什么功能。

ref1:为什么在JS中isNaN(null)== false?
ref2:https : //developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/isNaN


[EDIT]谢谢大家的回答。

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

在阅读Nina Scholz的答案时,我找到了一个有用的链接。
比较表:http : //dorey.github.io/JavaScript-Equality-Table/

Sur*_*yan 5

使用时,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)}`);
Run Code Online (Sandbox Code Playgroud)