javascript中只有false、0、-0、""、null、undefined、nan这7个假值,其余均为真值;空数组[]和空对象{}因属对象类型而为真值,字符串"0"、"false"等非空字符串也为真值。

JavaScript 中的布尔上下文不依赖你写 true 或 false,而是看某个值在 if、&&、||、! 等场景里“被当作什么用”。这个过程是自动发生的,叫隐式真值/假值判定——它不是类型转换成布尔类型再比较,而是直接按规则归类。
哪些值一定是假值(falsy)
只有 6 个值在任何布尔上下文中都算 false,必须记牢:
false-
0、-0(注意:0n不是假值) -
""(空字符串,不含空格) nullundefinedNaN
这六个之外,全是真值(truthy),没有例外。
为什么空数组 [] 和空对象 {} 是真值
因为它们是对象类型,而 JavaScript 规定:所有对象(包括 []、{}、/./、new Date())在布尔上下文中一律为 true。这不是“有内容才真”,而是语言设计如此。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
例如:
-
if ([]) { console.log('执行了') }→ 打印 -
if ({}) { console.log('也执行了') }→ 打印 -
Boolean([])→true
常见“看起来像假,其实为真”的情况
这些容易误判,但实际都会进入 if 分支或被逻辑运算符当作 true 处理:
-
"0"、"false"、" "(含空格)→ 字符串非空,就是真值 -
0n(BigInt 零)→ 不是数字0,不参与假值列表 -
new Boolean(false)→ 包装对象,本质是对象,所以为真 -
document.all→ 历史遗留,虽曾被当作假值,但不是标准假值,不应依赖
需要精确判断时别只靠 if (val)
直接用 if (val) 很方便,但无法区分 0 和 null、"" 和 undefined。这时应显式检查:
- 是否为
null或undefined:val == null或val === null || val === undefined - 是否为有效数字:
typeof val === 'number' && !isNaN(val) - 是否为非空字符串:
typeof val === 'string' && val.trim() !== '' - 是否为非空数组:
Array.isArray(val) && val.length > 0
不复杂但容易忽略。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










