布尔值在算术运算中转为数字:true→1、false→0;字符串拼接时转为字符串:"true"/"false";逻辑运算符不转换类型但用toboolean判断真假;==比较时布尔值先转数字再比,易出错,推荐用===。

布尔值在算术运算中转为数字
JavaScript 遇到 +、-、*、/ 等数学运算符时,会把布尔值转成数字:true → 1,false → 0。
-
true + 1得到2,不是字符串拼接 -
false * 100得到0,容易被误认为“没参与计算” -
Number(true)和+true结果都是1,说明这种转换是规范且一致的
布尔值在字符串拼接中转为字面量字符串
只要 + 的一侧是字符串,另一侧的布尔值就会变成对应字符串:true → "true",false → "false"。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
true + "hello"结果是"truehello",不是"true" + "hello"的语义混淆,而是明确的 ToString 转换 -
false + ""得到"false",不是空字符串或"",这点常被误用于“空值判断” -
String(false)也返回"false",印证了该转换与字符串上下文强绑定
逻辑运算符中不转换类型,只做真假判断
&& 和 || 不会把操作数变成布尔值,而是返回原值;但它们会先用 ToBoolean 规则判断真假(即把 0、""、null、undefined、NaN、false 当作 falsy)。
-
false || "default"返回"default",不是true -
true && []返回空数组[],它本身是 truthy,但不是布尔类型 - 陷阱在于:误以为
[] || "no data"会进右边分支——其实不会,因为空数组是 truthy
双等号(==)比较时布尔值转数字再比
使用 == 时,布尔值会被先转为数字,再和其他类型比较,而其他操作数也可能被转换,导致结果反直觉。
-
true == 1是true(true → 1,再比) -
false == ""也是true(false → 0,"" → 0) -
false == []同样为true([] → "" → 0,false → 0) - 这类链式转换极易失控,推荐一律用 === 替代
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










