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

JavaScript中map用&&为何返回[5,5,5,5]?&&运算符作用解析

问题解答:为什么array1.map(x => x && 5)返回[5,5,5,5]?

嘿,这个问题核心是要搞懂JavaScript里&&(逻辑与)运算符的短路求值特性,我来一步步给你拆解清楚:

一、先明确&&的工作规则

和很多编程语言不同,JavaScript的&&不是只返回true或false,它的逻辑是:

  • 先判断第一个操作数是否为真值(truthy):
    • 如果是真值,就直接返回第二个操作数
    • 如果是假值(falsy),就直接返回第一个操作数,并且不会再执行第二个操作数的代码(这就是“短路”的由来)

这里要补充:JavaScript里的假值只有这几个:false、0、''(空字符串)、null、undefined、NaN,除此之外的所有值都是真值——包括所有正/负非零数字、非空字符串、对象、数组等等。

二、结合你的代码具体分析

你的数组是var array1 = [1, 4, 9, 16],里面的每个元素都是正整数,全都是真值。所以当map遍历每个元素x时:

  • 执行x && 5,因为x是真值,所以&&直接返回第二个操作数5
  • 每个元素都走这个逻辑,最终map就返回了全是5的数组[5,5,5,5]

举个反例帮你加深理解

如果数组里包含假值,比如:

var array2 = [0, '', null, 3];
const map2 = array2.map(x => x && 5);
console.log(map2); // 输出: [0, '', null, 5]

这里前三个元素是假值,所以&&直接返回它们本身,只有最后一个真值3返回了5,这样你就能更直观看到&&的作用了。

三、总结&&在这里的作用

它其实是做了一个简单的条件判断:当x为真值时返回5,当x为假值时返回x本身。只是你的原数组里没有假值,所以最终结果全是5。

内容的提问来源于stack exchange,提问作者Yunus Emrah Dursun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:39:28