ZDecode
Javascript

类型转化

一、什么是隐式类型转换?

**隐式类型转换(Type Coercion)**是指 JavaScript 在执行表达式时,自动将不同类型的值转换为相应类型以完成运算,这通常发生在布尔判断、算术运算和字符串拼接中。

二、常见触发场景

  1. 布尔环境(如条件判断)
if ('') {}      // false,因为 '' 被转换成 false
  1. 算术运算符(+、-、*、/ 等)
'5' - 2;        // 3,'5' 被转换为数字
true + 1;       // 2,true → 1
  1. 加号运算符(字符串拼接 vs 数值加法)
'5' + 1;        // "51",+ 被用于拼接
5 + true;       // 6,true → 1
  1. 对象参与运算(ToPrimitive 转换)
[1, 2] + [3];   // "1,23",数组转换为字符串
{} + 1;         // "[object Object]1"(取决于上下文)

三、转换规则概览

  1. ToPrimitive: 对象 → 原始类型

调用顺序为 valueOf()toString(),视运算符而定。

  1. ToNumber: 字符串/布尔值 → 数字
Number('123');   // 123
Number(true);    // 1
  1. ToString: 数字/布尔值/对象 → 字符串
String(null);    // "null"
[1, 2] + "";     // "1,2"
  1. ToBoolean: falsy 值包括:false0""nullundefinedNaN

四、常见陷阱题

[] == ![];       // true,[] 转为 false,再与 false == false
null == undefined; // true,特殊规则