You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中判断值是否存在且为0/非0时返回0而非布尔值的问题

为什么JavaScript中0 && 表达式返回0而不是false?

这是因为JavaScript里的&&逻辑运算符不是返回布尔值,而是返回它的操作数本身,遵循以下规则:

  • 如果第一个操作数是假值(比如0、空字符串''、null、undefined、NaN、false),直接返回这个假值,不会执行第二个操作数;
  • 如果第一个操作数是真值,才会执行并返回第二个操作数的结果。

结合你的代码例子来看:

const example = 0

console.log( example === 0 )            // true 
console.log( example && example !== 0 ) // 0
console.log( example && example === 0 ) // 0
  • 第一行example === 0是严格相等比较操作,这类比较操作本身就会返回布尔值,所以输出true没问题;
  • 第二、第三行里,example的值是0,属于假值,所以&&直接返回第一个操作数0,完全不会去执行后面的example !== 0或example === 0,自然也就不会得到布尔结果。

如果你的需求是得到布尔值结果,可以用以下几种方式:

// 用Boolean()转换结果
console.log( Boolean(example && example !== 0) ) // false
// 用双重否定转换
console.log( !!(example && example !== 0) ) // false
// 直接写明确的条件判断(逻辑更清晰)
console.log( example !== undefined && example !== 0 ) // false

内容的提问来源于stack exchange,提问作者Stephanos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 16:10:20