我有两个这样的说法。他们为什么都评价false
?
console.log([] == true)
console.log(![] == true)
如果[] == true
不是false
应该![] == true
导致的true
?
这是胁迫的方式。
强制的第一步是将任何非原始类型转换为原始类型,然后使用一组规则将左侧,右侧或两侧转换为相同类型。您可以在此处找到这些规则。
在您的情况下[] == true
,将通过以下4个步骤:
[] == true
[] == 1
"" == 1
0 == 1
而基于操作者的优先级的!
在![] == true
这样的表达式转换为首先执行false == true
这显然false
。
您可以尝试Felix Kling的现场演示,以更好地了解相同性运算符的工作原理。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句