Javascript的隐式转换

102 阅读1分钟

22届应届生

面试复习!!! 可能问的问题 ** 方法不熟悉的**

**** 方法不熟悉的*** 1. 数学运算符中的类型转换 比如 [] + {} == ?, 因为 JS 并没有类型声明,所以任意两个变量或字面量,都可以做加减乘除 (1) 减、乘、除
我们在对各种非Number类型运用数学运算符(- * /)时,会先将非Number类型转换为Number类型。 加法过程中,遇到字符串,则会被处理为字符串拼接 如下 1 + "1" === "11" 1 + 1 === 2 "1" + 1 === "11" "1" + "1" === "11" 小细节哦 1 + true === 2
1 + false === 1
1 + null === 1
1 + undefined // NaN (2)减法操作时,一律需要把类型转换为Number,进行数学运算 3 - 1 === 2 3 - '1' === 2 '3' - 1 === 2

// [ ].toString() => "" => Number(...) => 0 3 - [] === 3

// {}.toString() => "[object Object]" => Number(...) => NaN 3 - {} // NaN (2)特殊值转换为数字 Number(false) === 0; Number(true) === 1; Number(undefined); // NaN Number("x"); // NaN 原文 mp.weixin.qq.com/s?src=11&ti… 最经典的来了哦
[]+{}=?? object object {a:3}+[]=?? 0 {}被当作代码片段了 +[] 相当于+0 ===0