关于JavaScript中的==与!的转换问题

最近遇到了一道很有趣的JavaScript试题,感觉很有趣。记录一下免得以后面试遇到

题目是:

console.log([]==![],{}==!{},[]==!{},{}==![])

这道题考察的主要是==号的隐式转换,

对象无论在有没有数据的情况下都为true,所以当console.log({}==!{})时相当于true==!true所以结果为false。

当用双等号判断[]==[]时是按照ToNumber算法来转换的,空数组[]用ToNumber算法转换成0也就是false,而!运算符是使用ToBoolean算法来转换的应为空数组也是对象所以[]转化成!true,所以console.log([]==[])时相当于false==false,所以结果为true.

同样的道理最后console.log({} == []),应为对象无论在何种情况下都为true,而[]采用ToBoolean算法来转换,相当于!true,所以结果相当于true == !true结果为false。

猜你喜欢

转载自www.cnblogs.com/yuanchao-blog/p/11448107.html