提问人:Yurii Savchuk 提问时间:8/16/2017 最后编辑:Yurii Savchuk 更新时间:8/16/2017 访问量:420
为什么数组等于数组而不是数组 (javascript)?
Why Array is equal not array (javascript)?
问:
我们都知道 JavaScript 是一种非常有趣的语言,但有一些棘手的部分。
如果可能的话,请解释一下它是如何工作的:是相等的。[ ]
![ ]
[ ] == ![ ] // -> true
我不明白,为什么结果是?"true"
答:
0赞
marvel308
8/16/2017
#1
调用 if (array == false) 时,将此对象的值与原始 false 值进行比较。在内部,调用 arr.toString(),它返回一个空字符串 “”。
![] // will return false
[] == false // this would return true, since "" == false
console.log((![]).toString());
console.log(([]).toString());
console.log("" == false);
这是它在内部的称呼,请查看此答案了解更多详情
评论
0赞
Yurii Savchuk
8/16/2017
marvel308,感谢您的回答。我回顾了一些疯狂的例子,并试图了解它们是如何工作的。现在我明白了这个例子。
2赞
Thomas
8/16/2017
#2
因为不会将它们与类型安全进行比较,但会强制转换值:==
[] == ![]
//is
[] == false
//is casted into
"" == false
//and that into
false == false
//wich is
true
使用 TypeSafe 比较
console.log(`[] == ![]`, [] == ![])
console.log(`[] === ![]`, [] === ![])
在我看来,使用的唯一原因是当你反对或想要覆盖两者时。所以,写作==
null
undefined
value == null
//or
value != null
//instead of the more explicit (but longer)
value === null || value === undefined
//respectively
value !== null && value !== undefined
我会在其他任何地方使用,因为这些有趣的结果有时会出现。===
==
这里有一个有趣的小片段,请欣赏:https://www.destroyallsoftware.com/talks/wat
评论
0赞
Yurii Savchuk
8/16/2017
托马斯,谢谢你的回答。我回顾了一些疯狂的例子,并试图了解它们是如何工作的。现在我明白了这个例子。
0赞
evolutionxbox
8/16/2017
@YuriiSavchuk了解更多信息,研究真实和虚假的价值观。
上一个:ruby 中布尔数组的最终逻辑值
评论