javascript中只有6个假值:false、0(含-0、0n)、''、null、undefined、nan;其余所有值(如{}、[]、'0'、'false')均为真值。

JavaScript 中把其他数据类型转换为布尔类型,主要依靠“**隐式转换**”或“**显式转换**”,核心规则是:只有 6 个值是 falsy(假值),其余全部为 truthy(真值)。
哪些值会被转成 false?
以下 6 个值在布尔上下文中自动转为 false:
-
false(本身) -
0(数字零,包括-0和0n(BigInt 零)) -
''(空字符串,注意:' '(含空格)是 true) nullundefinedNaN
除此之外,所有其他值——比如 {}、[]、function(){}、new Date()、new Boolean(false),甚至字符串 'false' 或 '0' —— 全部转为 true。
怎么显式转成布尔值?
用 Boolean() 构造函数或双重取反 !!,效果一致,推荐后者更简洁:
-
Boolean(0)→false -
!![]→true -
Boolean('hello')→true -
!!null→false
注意:Boolean 是函数,不是关键字,但作为构造器调用时(不加 new)就是类型转换;加 new 会返回布尔对象(不推荐)。
条件判断中实际怎么用?
if、while、三元运算符等都会自动触发 ToBoolean 转换。常见写法和易错点:
- 检查变量是否存在且非空:
if (str && str.trim())(避免空格字符串被误判为真) - 安全访问嵌套属性:
if (obj && obj.user && obj.user.name),或用可选链obj?.user?.name - 数组非空判断:
if (arr && arr.length),因为[]是 true,不能只靠if (arr) - 区分
0和false:如果业务中0是有效值(如分页页码),别直接if (page),应改用page !== undefined && page !== null或Number.isInteger(page)
小技巧:快速验证某个值的布尔结果
在控制台输入:console.log(!!yourValue),一眼看出它在条件判断中表现如何。
不复杂但容易忽略细节。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











