掌握强制类型转换的关键是理解number()、string()、boolean()三函数行为:number()对非法字符串返回nan,空串/空格返回0;string()安全统一,null→"null";boolean()仅6个假值,其余全为true。

掌握强制类型转换,关键不是死记规则,而是理解三类核心函数的行为逻辑和边界情况。重点抓准 Number()、String()、Boolean() 这三个显式转换函数的输入响应方式,再配合少量典型操作符(如 +、-)的隐式触发场景,就能稳住大部分实际需求。
Number() 转数字:看它“认不认得”这个值
Number() 对原始值的处理很直接:
- 纯数字字符串(含前后空格)→ 对应数字,如
Number(" 42 ")得42 - 空字符串或全空白 →
0,如Number("")或Number(" \t\n ") - 含非法字符的字符串(哪怕只多一个字母)→
NaN,如Number("123px")、Number("42a") -
true→1,false→0 -
null→0,undefined→NaN
对象会先调用 valueOf(),失败再试 toString();数组是特例:Number([1]) 是 1,Number([1,2]) 是 NaN(因为 [1,2].toString() 得 "1,2")。
String() 转字符串:安全又统一
String() 几乎没有报错风险:
- 任何原始值都能转出明确字符串:
String(123)→"123",String(true)→"true" -
null→"null",undefined→"undefined" - 对象默认调用
toString(),所以String({})是"[object Object]",String([])是"",String([1,2])是"1,2"
相比 xxx.toString(),String() 更健壮——后者在 null 和 undefined 上会直接报错。
Boolean() 转布尔:只记六个假值就够了
Boolean() 的逻辑最简单:除了以下六个值转为 false,其余全为 true:
false-
0(包括+0、-0) -
""(空字符串) nullundefinedNaN
注意:[]、{}、new Date()、function(){} 全是 true,哪怕空数组也是真值。
常用技巧与避坑点
日常写代码时,这几个小技巧能帮你少踩坑:
- 想把字符串安全转数字?优先用
Number(str),别用parseInt(str)—— 后者会截断,parseInt("123abc")居然得123 - 想确保是字符串拼接?用
str + ""比String(str)更轻量,但语义稍弱;需要清晰意图时仍推荐String() - 判断是否为有效数字?别只靠
Number(x),要结合!isNaN(Number(x)) && isFinite(Number(x)) - 避免
==引发意外转换:一律用===,需要比较前转换就手动写清楚,比如Number(a) === Number(b)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











