加减乘除四则运算中除+外其他都是数学运算。
谨记:
+一旦遇到字符串会立马进行字符串拼接。 面试题:
let a = 10+null+true+[]+undefined+'珠峰'+null+[]+10+false;
console.log(a) // '11undefined珠峰null10false'
遇到第一个
[]的时候11+[]先把[]转换成数字,引用类型转数字是先转换成字符串:[].toString() ==> '',再转为数字:Number('') ==> 0,但是+遇到字符串就立马变成字符串拼接,后面的转换就不执行了,所以11+[] ==> 11+'',结果为'11'
相加的过程两边类型不同会先进行类型转换:
- 其中一边包含有字符串会先把另一边转换成字符串再拼接;
- 两边都没有字符串就是数学运算,所以会先转换成数字再运算。
注意: 这两种情况都适用
+一旦遇到字符串会立马进行字符串拼接