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

JS中Array.includes()函数是否会遍历全部数组元素?

关于Array.includes()在目标元素位于数组开头时的遍历行为

嘿,这个问题问得很到位!直接给你答案:不会遍历整个数组,Array.includes()是短路求值的,一旦找到匹配的元素就会立刻停止遍历。

为什么会这样?

includes()方法的工作逻辑是从数组的第一个元素(索引0)开始,逐个用**严格相等(===)**的规则检查元素是否和目标值匹配。只要找到第一个符合条件的元素,它就会马上返回true,不会再继续检查后面的元素了——这就像你找东西,第一个抽屉就找到了,肯定不会再翻后面的抽屉对吧?

结合你的代码来看

你的代码里,调用search(['alaa','ali','ammar','omar','alia'],'alaa')时,includes()会先检查索引0的元素'alaa',发现正好匹配目标值,直接返回true,后面的'ali'、'ammar'这些元素根本不会被遍历到。

另外顺便提一句,你的search函数其实可以简化,因为includes()本身就返回布尔值,不用多此一举写if-else:

function search(array, requiredItem) {
  return array.includes(requiredItem);
}

怎么验证这个行为?

如果你想亲眼确认,可以写个小测试,给数组元素加个访问监听,看看哪些元素被访问了:

const testArray = [
  // 第一个元素,访问时打印日志
  Object.defineProperty({}, 'valueOf', {
    get() {
      console.log('检查了第一个元素');
      return 'alaa';
    }
  }),
  // 第二个元素
  Object.defineProperty({}, 'valueOf', {
    get() {
      console.log('检查了第二个元素');
      return 'ali';
    }
  })
];

testArray.includes('alaa');
// 控制台只会输出"检查了第一个元素",说明第二个元素没被遍历到

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:30:18