【发布时间】:2019-07-22 11:07:38
【问题描述】:
我使用 Chrome 浏览器 60.x,并测试代码isNaN([3])。
结果是false,但是看不懂。
[3] 是一个数组,它不为空。
我认为[3] 是数组对象,它不是数字。
否则isNaN(["ABC"]) 的结果是true。
isNaN([1,2,3]) 的另一个结果是 true。
所以我猜javascript引擎正在强制将数组更改为数组具有单个元素的数字。
请告诉我isNaN 数组参数函数发生了什么。
ref1: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([3]) = false,有问题你说它是真的......它是什么? -
强类型与弱类型。在。为方便起见,某些语言允许隐式转换。在其他情况下,为了可靠性,所有内容都必须明确。
-
虽然
[3]是确定性的[1,2,3]不是,但 JS 通过应用类型强制隐式利用了这一事实。
标签: javascript arrays