1<2<3 输出结果为 true
3>2>1 输出结果为 false
[] == ![] 输出结果为 true
{} == !{} 输出结果为 false
按照计算顺序,不难理解
1<2输出结果为true,然后true<3,输出结果为true
3>2输出结果为true,然后true>1,输出结果为false
![]输出结果为false,然后[] == false,输出结果为true
!{}输出结果为false,然后{} == false,输出结果为false
抛开前面的扰乱,这个问题的实质是不同数据类型的关系运算
任意值与布尔值比较,都会将两边的值转化为Number。
Number(true) 1
Number(false) 0
Number([]) 0
Number({}) NaN
其中NaN是一个特殊的情况,规定NaN不和任何数值相等,包括它自身。
由此延伸到几个知识点,推荐几篇文章。