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

为什么JavaScript中console.log(0 && 0 === 0)返回0而非true?

为什么console.log(0 && 0 === 0)返回0而不是true?

嘿,这个问题其实是JavaScript里两个核心规则在搞事情——逻辑与(&&)的短路求值特性和运算符优先级,我给你一步步拆解明白:

1. 先搞懂运算符优先级

在JavaScript里,===(严格相等)的优先级比&&(逻辑与)要高,所以不管是你给出的哪个示例,都会先计算xxx === xxx这部分,再处理&&的逻辑。

2. 再理解&&的短路求值规则

&&的工作逻辑很有意思:它会从左到右依次检查每个操作数:

  • 如果遇到第一个假值(JavaScript里的假值包括:0、空字符串''、null、undefined、NaN、false),就直接返回这个假值,后面的表达式完全不会执行(这就是“短路”);
  • 如果前面的操作数都是真值,就会返回最后一个操作数的结果。

现在逐个分析你的示例:

示例1:console.log(0 && 0 === 0);

  1. 先计算优先级更高的0 === 0,结果是true;
  2. 现在表达式变成了0 && true,因为0是假值,&&直接返回这个假值0,所以最终输出0。

示例2:console.log(2 && 2 === 2);

  1. 先计算2 === 2,结果是true;
  2. 表达式变成2 && true,2是真值,所以&&会继续处理后面的表达式,最终返回后面的true,所以输出true。

给你再补两个小例子加深理解:

  • '' && '我不会被执行' → 返回''(空字符串是假值,直接返回)
  • '我是真值' && 12345 → 返回12345(前面是真值,返回最后一个操作数)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:58:53