JavaScript中数字与布尔值相加时,布尔值先隐式转为数字(true→1,false→0),再执行数值加法;如5+true结果为6,0+false结果为0,不触发字符串拼接。

JavaScript 中数字与布尔值相加时,会先对布尔值做隐式转换,再执行加法运算。核心规则是:布尔值 true 转为 1,false 转为 0,然后按数字加法规则计算。
布尔值转数字的固定映射
这是 JavaScript 规范定义的抽象操作 ToNumber 对布尔值的处理方式:
- true → 1
- false → 0
这个转换不依赖上下文,只要参与算术运算(如 +、-、*),就会触发。
数字与布尔值相加的实际结果
加号(+)在这里是数值相加,不是字符串拼接(因为至少有一个操作数是数字,不会触发字符串转换):
立即学习“Java免费学习笔记(深入)”;
-
5 + true→5 + 1→6 -
0 + false→0 + 0→0 -
-3 + true→-3 + 1→-2 -
10 + false + true→10 + 0 + 1→11
注意:不要和字符串拼接混淆
如果左侧是字符串,比如 "5" + true,那会走另一条路径:true 转成字符串 "true",结果是 "5true"。但题目限定是“数字与布尔值相加”,即至少一个操作数是数字类型(如 5、-0、NaN),此时加法按数值运算处理。
如何避免意外?
显式转换更清晰、可读性更强,也便于调试:
- 用
Number(bool)或+bool显式转数字 - 用
Boolean(num)或!!num显式转布尔 - 在关键逻辑中避免依赖隐式转换,例如:
score += isBonus ? 1 : 0比score += isBonus更明确


















