【发布时间】:2020-08-25 18:15:24
【问题描述】:
一个错误让我在 45 分钟的循环中摸不着头脑,当我终于意识到分配一个包含另一个(空)数组 myArray = [[]] 的数组时,它与 false 等价:
if (myArray == false) {} // true
我知道if (myArray === false) {} // false,但为什么长度> 0 的数组完全等同于false?
【问题讨论】:
-
我想你不知何故感到困惑,空数组和带有元素的数组评估为
true -
@thedude - 他们没有混淆,
[[]] == false的结果确实是true。 -
当您调用 (myArray == false) 时,您比较该 myArray 对象的值(数组是 javascript 中的对象实例),然后调用 myArray.toString(),它返回一个空字符串“ ”。这是因为在 Array 上调用 toString 返回 Array.join(),而空字符串是 JavaScript 中的假值之一。
-
@T.J.Crowder 哇,另一个关于 javascript 行为的有趣讨论,如果我没有看到,谢谢。
标签: javascript