1、图
2、隐式转换中主要涉及到三种转换:
1、将值转为原始值,ToPrimitive()。 2、将值转为数字,ToNumber()。 3、将值转为字符串,ToString()。
3、加法---先toString再toNumber+引用类型
⭐️为什么加法要区别对待?因为JS里 +还可以用来拼接字符串。谨记以下3条:
当一侧为String类型,被识别为字符串拼接,并会优先将另一侧转换为字符串类型。 当一侧为Number类型,另一侧为原始类型,则将原始类型转换为Number类型。 当一侧为Number类型,另一侧为引用类型,将引用类型和Number类型转换成字符串后拼接。 ⭐️以上 3 点,优先级从高到低,即 3+'abc' 会应用规则 1,而 3+true会应用规则2。
123 + '123' // 123123 (规则1)
123 + null // 123 (规则2)
123 + true // 124 (规则2)
123 + {} // 123[object Object] (规则3
4、减、乘、除 ----非number,转number类型
⭐️我们在对各种非Number类型运用数学运算符(- * /)时,会先将非Number类型转换为Number类型。
1 - true // 0, 首先把 true 转换为数字 1, 然后执行 1 - 1
1 - null // 1, 首先把 null 转换为数字 0, 然后执行 1 - 0
1 * undefined // NaN, undefined 转换为数字是 NaN
2 * ['5'] // 10, ['5']首先会变成 '5', 然后再变成数字 5