隐式转换为布尔值
1.表达式中有字符串
其他类型隐式转换为字符串
多个加号时,按照从左到右的顺序,两两进行计算
只要表达式中如果有字符串,最终结果一定是字符串
如果有复杂类型,先将复杂类型按照对象隐式转换规则转换成字符串
2 + "3"; // "23"
1 + 2 + "3"; // "33"
true + 2 + "3"; // "33"
1 + "2" + 3; // "123"
"2" + true; //"2true"
"2" + undefined; //"2undefined"
"2" + NaN //"2NaN"
'23' + {'a': 1} //"23[object Object]"
'23' + [1,3,{}, null, undefined, '', '2'] // "231,3,[object Object],,,,2"
[1,3,{}, null, undefined, '', '2'].toString() //"1,3,[object Object],,,,2"
23 + "1,3,[object Object],,,,2" //"231,3,[object Object],,,,2"
2.表达式中没有字符串
如果没有复杂类型,其他类型隐式转换为数字
如果有复杂类型,先将复杂类型按照对象隐式转换规则转换成原始值再按照如上规则计算
1 + [] //"1"
1 + [1] //"11"
1 + {a:'a'} //"1[object Object]"
null + null //0
true + {a:'a'} //"true[object Object]"