关于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。

原文地址:https://www.cnblogs.com/yuanchao-blog/p/11448107.html