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

为何JavaScript中Array.every()加箭头函数大括号返回结果异常?

为什么带大括号的箭头函数版本返回False?

这是箭头函数语法里一个很容易踩的小坑,咱们来一步步把它说清楚:

箭头函数的两种语法差异

箭头函数有两种写法,核心区别就在返回值的处理上:

  • 简洁体(不带大括号):如果函数体只有一条表达式,不需要手动写return,表达式的计算结果会自动作为函数的返回值。比如你写的正确版本:

    x=> x % 2 === 0
    

    这里x % 2 === 0的布尔结果会直接返回给every方法,每个元素都能被正确判断是否为偶数,最终自然返回True。

  • 块体(带大括号):一旦给箭头函数加上大括号,就变成了块级函数体,这时候必须显式写return语句才能返回值。你的带大括号版本:

    x=> { x % 2 === 0 };
    

    这里只是执行了x % 2 === 0这个表达式,但没有把它的结果返回出去,所以这个箭头函数默认返回undefined。

为什么every会返回False?

Array.prototype.every()方法对回调函数的返回值有明确要求:它需要一个布尔值来判断当前元素是否符合条件。如果回调返回的是undefined(或者其他会被隐式转为false的值,比如null、0),every会把它当成false处理,一旦遇到第一个“假值”就会停止遍历,最终返回False。

在你的带大括号版本里,每个元素对应的回调都返回undefined,所以every直接判定不符合“所有元素都是偶数”的条件,返回了False。

修正带大括号的写法

如果一定要用大括号的写法,只要补上return就行:

function checkAllEven(arr) { return arr.every(x=> { return x % 2 === 0 }); }

这样就能和不带大括号的版本得到完全一致的结果啦。

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

相关产品推荐
方舟 Agent Plan

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

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