JobbyM's Blog

一日一练-JS 值的比较

子曰:值的比较

由Alex Dorey (@dorey on GitHub)提供的表格,此图包含!=== 以及===

令人误解的JS 表达式

1.

1
2
[] + {} // '[object Object]'
{} + [] // 0

错误的理解:
+ 操作符会根据第一个操作数是[] 还是{} 而给出不同的结果

正确的解释:
第一行中,{} 出现在+ 操作符的表达式中,因此被翻译为一个实际的值(一个空的object)。[] 被强制转换为"",因此{} 也会被强制转换为一个string[object Object]

第二行中,{} 被翻译为一个独立的{} 空代码块(它什么也不做)。块儿不需要分号来终结它们,所以这里缺少分号不是一个问题。最终,+[] 是一个将[] 明确强制转化为number 的表达式,而它的值是0

参考文档

  1. 你不懂JS:类型与语法