javascript中只有6个假值:false、0(含-0)、""、null、undefined、nan,其余均为真值;空数组[]、空对象{}等均属真值,判断是否为空需用length或object.keys()等方法。

JavaScript 中布尔类型转换规则是条件判断的底层基础——它不靠你显式写 true 或 false,而是自动把任意值转成布尔值来决定是否执行代码块。
哪些值在 if 中会被当成 false
以下 6 类值在条件判断中会隐式转为 false(统称“假值 / falsy”):
- false(本身)
-
0 和 -0(注意:
"0"是 true) -
""(空字符串;含单引号或双引号都算,但
" "(带空格)是 true) - null
- undefined
- NaN
只要变量值属于以上任一,if (val) { ... } 就不会进入大括号内。
其他所有值默认都是 true
只要不是上面那 6 种,一律视为“真值(truthy)”,包括:
-
"0"、"false"、" "(非空字符串) -
[](空数组)、{}(空对象)、new Date()、/regex/ -
42、-1、3.14、Infinity -
function(){}(函数,哪怕空函数)
例如:if ([]) console.log('yes') 会打印 —— 因为空数组不是 falsy。
实际判断时别只看“空不空”,要看“是不是 falsy”
新手常误以为“空数组、空对象等于 false”,其实不然。真正要判断是否为空,得结合具体类型处理:
- 数组是否为空 → 用
arr.length === 0 - 对象是否为空 → 用
Object.keys(obj).length === 0 - 字符串是否为空 → 用
str.trim() === ""(防空白字符) - 变量是否存在且有值 → 常用
if (val != null && val !== undefined),或更稳妥地用可选链 + 空值合并:if (obj?.prop ?? false)
逻辑运算符不是返回布尔值,而是返回操作数本身
&& 和 || 在条件判断中很常用,但它们返回的是原始值,不是 true/false:
-
a || b:如果a是 truthy,返回a;否则返回b(常用于提供默认值) -
a && b:如果a是 falsy,返回a;否则返回b(常用于安全取值)
例如:const name = user.name || "Anonymous",user.name 若为 "" 或 undefined,就取默认值;user && user.profile && user.profile.avatar 可防止报错(也可简写为 user?.profile?.avatar)。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











