我们在对各种非Number
类型运用数学运算符(- * /
)时,会先将非Number
类型转换为Number
类型;
1 - true // 0
1 - null // 1
1 * undefined // NaN
2 * ['5'] // 10
注意+
是个例外,执行+
操作符时:
- 1.当一侧为
String
类型,被识别为字符串拼接,并会优先将另一侧转换为字符串类型。 - 2.当一侧为
Number
类型,另一侧为原始类型,则将原始类型转换为Number
类型。 - 3.当一侧为
Number
类型,另一侧为引用类型,将引用类型和Number
类型转换成字符串后拼接。
123 + '123' // 123123 (规则1)
123 + null // 123 (规则2)
123 + true // 124 (规则2)
123 + {} // 123[object Object] (规则3)