我使用Chrome浏览器60.x,并测试代码isNaN([3])
。 结果是false
,但我无法理解它。为什么NaN([3])在JavaScript中是错误的?
[3]
是一个数组,它不是空的。 我认为[3]
是数组对象,它不是一个数字。
否则isNaN(["ABC"])
的结果是true
。 而isNaN([1,2,3])
的另一个结果是true
。 所以我想javascript引擎是强制改变数组,其中数组有一个单一的元素。
请让我知道发生了什么isNaN
数组参数的函数。
REF1:Why is isNaN(null) == false in JS?
REF2:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN
[编辑]谢谢大家的回答。
我明白JavaScript比较前隐式解析了值。
我在阅读Nina Scholz的回答时发现了一个有用的链接。
比较表:http://dorey.github.io/JavaScript-Equality-Table/
在标题你说'isNaN([3])= FALSE',在问题,你说,它是真... 它是什么? – campovski
强打字与弱打字。在。为方便起见,允许使用某些语言,隐式转换。在其他情况下,所有人都必须明确可靠性。 – WGroleau
虽然'[3]'是确定性的[1,2,3]不是,JS通过应用类型强制隐式地使用这个事实。 – Redu