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

为什么箭头函数带大括号时Array.prototype.every()返回false,不带则返回true

问题原因:箭头函数的返回值规则差异

这一差异是箭头函数的两种写法的返回值规则不同导致的:

  • 当箭头函数不使用大括号包裹函数体时,默认启用隐式返回规则:会直接将函数体唯一一行表达式的执行结果作为返回值返回。
  • 当箭头函数使用大括号包裹函数体时,属于块级作用域显式写法,必须手动声明return语句才会返回对应值,没有声明return的函数默认返回undefined。

对应到你的代码逻辑:

  1. isPresentInBothArrays1的回调使用了大括号包裹逻辑,但是没有加return语句,每次迭代的回调都返回undefined,而undefined属于布尔假值。Array.every()方法只要遇到一个返回假值的回调就会终止迭代,直接返回false。
  2. isPresentInBothArrays2的回调使用无大括号的简写写法,隐式返回array1.includes(number)的布尔结果,三次迭代的结果都为true,所以every方法最终返回true。

如果要让带大括号的写法返回正确结果,补充return语句即可:

const isPresentInBothArrays1 = array2.every((number)=>{
   return array1.includes(number);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:06:03