if([] == false){console.log('a')}
if({} == false){console.log('b')}
if([] == {}){console.log('c')}
if([]){console.log('d')}
这几道题的隐式转换的方式大神帮忙解答下吧
if([] == false){console.log('a')}
if({} == false){console.log('b')}
if([] == {}){console.log('c')}
if([]){console.log('d')}
这几道题的隐式转换的方式大神帮忙解答下吧
10 回答11.4k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.9k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
对象和非对象之间的相等比较
ES5 规范 11.9.3.8-9 做如下规定:
ToPrimitive
就是尝试返回它的原始值,也就是string
或者number
。因此:
[]
会先通过valueOf
,得到[]
,不是原始值,再通过toString
,得到""
"[object Object]"
''!="[object Object]"
==
,[]默认为true参考:《你不知道的JS(中)》,强烈建议看看,另外给出一个很坑的
[]==![]
,返回true
!