隐式转换

隐式转换
Breezli隐式转换
在某些操作中,JavaScript 自动将一种数据类型转换为另一种数据类型
以下是常见场景
字符串拼接
用
+
时,如果其中一个操作数是字符串,另一个操作数会被自动转换为字符串
1 | console.log(1 + "2"); // 输出: "12" |
数字运算
数学运算时,非数字类型的值会被隐式转换为数字
1 | console.log(10 - "5"); // 输出: 5 |
布尔值
条件判断中,JavaScript 会将值隐式转换为布尔值
以下值被视为false
false
0
null
undefined
NaN
""
(空字符串)
其他所有值都被视为 true
。
1 | if ("") { // 为 false |
==与===
==
(宽松相等)与===
(严格相等)的核心区别在于是否进行类型转换:
===
:直接比较 值 + 类型 ,类型不同立即返回false
。例如5 === "5"
为false
。==
(!=
同理):若类型不同,按规则 隐式转换 后比较:
1 | console.log(1 == "1"); // true (数字和字符串被隐式转换) |
最佳实践:
- 始终使用
===
避免隐式转换陷阱,提升代码可预测性。 - 若需类型转换,应显式转换(如
Number(str)
或String(num)
)而非依赖==
。