console.log([] + {}) // "[object Object]"
console.log({} + []) // 0
顺序不一样,产生的结果不一致问题,是由于语法解析和类型转换引起的。
当遇到[] + {}时,进行+运算,[]被隐式转换"",{}被转化为[object Object],所以结果为"[object Object]",
当遇到{} + []时,会把{}当成代码块来解析,而后面的+[],被当成显式转化为number类型,结果为0。
console.log([] + {}) // "[object Object]"
console.log({} + []) // 0
顺序不一样,产生的结果不一致问题,是由于语法解析和类型转换引起的。
当遇到[] + {}时,进行+运算,[]被隐式转换"",{}被转化为[object Object],所以结果为"[object Object]",
当遇到{} + []时,会把{}当成代码块来解析,而后面的+[],被当成显式转化为number类型,结果为0。