JavaScript中布尔值参与加法运算时,先转为数字(false→0,true→1)再相加;若任一操作数为字符串,则转为字符串拼接。

JavaScript 中布尔值参与加法运算时,会先被隐式转换为数字:false 变成 0,true 变成 1,然后再进行数值相加。
布尔值转数字的规则
这是 JavaScript 类型转换的基本规则之一,发生在 + 运算符的至少一个操作数是数字(或可转为数字)时:
-
false + 0→0 + 0→0 -
true + 5→1 + 5→6 -
true + true→1 + 1→2 -
false + false + true→0 + 0 + 1→1
和字符串拼接的区别
加法运算的行为取决于操作数类型组合。如果其中一个是字符串,整个运算会变成字符串拼接,此时布尔值会转为字符串而非数字:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
true + "hello"→"truehello"(true转成字符串"true") -
false + 123→0 + 123→123(无字符串,走数字转换) -
"" + true + false→"truefalse"(开头是空字符串,触发字符串拼接)
实际应用中的注意事项
这种隐式转换虽方便,但也容易引发意外结果:
立即学习“Java免费学习笔记(深入)”;
- 用
Boolean值统计“真值个数”时可行:[true, false, true].reduce((s, x) => s + x, 0)得到2 - 但若混入字符串,结果可能出人意料:
true + "1"是"true1",不是2 - 建议显式转换更清晰:
Number(true)、+false或三元表达式flag ? 1 : 0
不复杂但容易忽略,关键看加法两边有没有字符串——有,就转字符串拼接;没有,就转数字相加。

















