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

这段JavaScript代码执行后输出false,原因是什么?

为什么这段JavaScript代码控制台输出false?

先看执行的代码:

cellColor = {};
cellColor['cel32'] = 'blue';
cellColor['cel24'] = 'blue';
cellColor['cel16'] = 'blue';
cellColor['cel8'] = 'blue';

console.log(
  (((cellColor['cel32'] === cellColor['cel24']) === cellColor['cel16']) ==
    cellColor['cel8']) ==
  'blue',
);

我们拆解这个嵌套比较的执行过程:

  • 第一步:cellColor['cel32'] === cellColor['cel24'],两个值都是字符串'blue',全等(===)会同时比较值和类型,所以结果是布尔值true。
  • 第二步:把第一步的true和cellColor['cel16'](值为'blue')做全等比较:true === 'blue'。布尔值和字符串类型完全不同,全等比较直接返回false。
  • 第三步:把第二步的false和cellColor['cel8'](值为'blue')做相等(==)比较。相等比较会先做类型转换:布尔值false转成数字是0,字符串'blue'转成数字是NaN。0和NaN不相等,所以结果是false。
  • 第四步:把第三步的false和字符串'blue'做相等比较:false == 'blue',同样类型转换后0和NaN不相等,最终结果就是false。

核心问题在于嵌套比较中,每一步的结果会从字符串变成布尔值,后续的比较就变成了布尔值和字符串的对比,再加上==的类型转换规则,最终导致结果为false。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:57:25