'a' == ['a'] 谷歌浏览器返回了true 是为什么
1
因为会隐式转换。
相等(==
)运算符检查其两个操作数是否相等,返回一个布尔值结果。与严格相等运算符不同,它会尝试转换不同类型的操作数,并进行比较。
相类似的问题还有 为什么[] == ![] ?
这里有个类似的问题我曾经回答过,给你参考:https://segmentfault.com/q/1010000043401367/a-1020000043401565
注意第九条,按照你的例子转换出来就是:'a' == 'a'
.这是javascript的抽象相等比较算法决定的。
当使用==
运算符比较两个不同类型的值时,js会尝试将它们转换为相同的类型进行比较。右侧的 ['a']
是一个数组。js会调用toString()
方法将数组转换为字符串。['a'].toString()
的结果是'a'
。表达式变为'a'=='a'
,显然是true
。
console.log(['a'].toString()); // 'a'
6 回答5.3k 阅读✓ 已解决
9 回答9.5k 阅读
5 回答3.7k 阅读✓ 已解决
4 回答8.1k 阅读✓ 已解决
7 回答10.1k 阅读
5 回答8.4k 阅读
2 回答10.5k 阅读✓ 已解决
当字符串与数组进行
==
比较时,会将数组转换为字符串,再和字符串进行比较