Javascript
类型转化
一、什么是隐式类型转换?
**隐式类型转换(Type Coercion)**是指 JavaScript 在执行表达式时,自动将不同类型的值转换为相应类型以完成运算,这通常发生在布尔判断、算术运算和字符串拼接中。
二、常见触发场景
- 布尔环境(如条件判断)
if ('') {} // false,因为 '' 被转换成 false- 算术运算符(+、-、*、/ 等)
'5' - 2; // 3,'5' 被转换为数字
true + 1; // 2,true → 1- 加号运算符(字符串拼接 vs 数值加法)
'5' + 1; // "51",+ 被用于拼接
5 + true; // 6,true → 1- 对象参与运算(ToPrimitive 转换)
[1, 2] + [3]; // "1,23",数组转换为字符串
{} + 1; // "[object Object]1"(取决于上下文)三、转换规则概览
ToPrimitive: 对象 → 原始类型
调用顺序为 valueOf() → toString(),视运算符而定。
ToNumber: 字符串/布尔值 → 数字
Number('123'); // 123
Number(true); // 1ToString: 数字/布尔值/对象 → 字符串
String(null); // "null"
[1, 2] + ""; // "1,2"- ToBoolean: falsy 值包括:
false、0、""、null、undefined、NaN
四、常见陷阱题
[] == ![]; // true,[] 转为 false,再与 false == false
null == undefined; // true,特殊规则