js的隐式转换

209 阅读1分钟

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