子曰:值的比较
由Alex Dorey (@dorey on GitHub)提供的表格,此图包含!=、== 以及===。
令人误解的JS 表达式
1.
1  | [] + {} // '[object Object]'  | 
错误的理解:+ 操作符会根据第一个操作数是[] 还是{} 而给出不同的结果
正确的解释:
第一行中,{} 出现在+ 操作符的表达式中,因此被翻译为一个实际的值(一个空的object)。[] 被强制转换为"",因此{} 也会被强制转换为一个string:[object Object]。
第二行中,{} 被翻译为一个独立的{} 空代码块(它什么也不做)。块儿不需要分号来终结它们,所以这里缺少分号不是一个问题。最终,+[] 是一个将[] 明确强制转化为number 的表达式,而它的值是0。