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

如何给JavaScript array.every的箭头函数回调传递参数?

问题原因

Array.every()的第二个参数是用来指定回调函数执行时的this上下文,并非直接传递给回调的参数。同时你的回调函数参数顺序有误:every给回调传入的参数依次是数组元素、索引、原数组,所以你定义的args实际拿到的是数组元素的索引值,而非你传入的'value A'/'value B'。

解决方法

以下是三种可行的实现方式:

方法1:闭包工厂函数

通过工厂函数生成绑定了目标参数的回调,逻辑清晰且复用性强:

const sampleArray = [5, 3, 4, 6, 7];

// 生成带指定参数的回调函数
const createProcessedHandler = (targetArg) => {
  return (value) => {
    console.log('manoj', targetArg);
    if (targetArg === 'value A') {
      // 执行对应逻辑
      return true; // every要求返回布尔值,需根据实际逻辑调整
    } else if (targetArg === 'value B') {
      // 执行对应逻辑
      return true;
    }
    return false;
  };
};

// 调用方式
sampleArray.every(createProcessedHandler('value A'));
sampleArray.every(createProcessedHandler('value B'));

方法2:Function.bind()绑定参数

通过bind提前绑定目标参数,注意调整回调的参数顺序:

const sampleArray = [5, 3, 4, 6, 7];

// 把目标参数放在参数列表最前面
function getProcessedData(targetArg, value) {
  console.log('manoj', targetArg);
  if (targetArg === 'value A') {
    // 执行对应逻辑
    return true;
  } else if (targetArg === 'value B') {
    // 执行对应逻辑
    return true;
  }
  return false;
};

// 用bind绑定第一个参数,null表示不需要指定this
sampleArray.every(getProcessedData.bind(null, 'value A'));
sampleArray.every(getProcessedData.bind(null, 'value B'));

方法3:箭头函数中转

直接在every调用中用箭头函数包装,手动传递目标参数:

const sampleArray = [5, 3, 4, 6, 7];

const getProcessedData = (value, targetArg) => {
  console.log('manoj', targetArg);
  if (targetArg === 'value A') {
    // 执行对应逻辑
    return true;
  } else if (targetArg === 'value B') {
    // 执行对应逻辑
    return true;
  }
  return false;
};

// 用箭头函数中转参数
sampleArray.every(value => getProcessedData(value, 'value A'));
sampleArray.every(value => getProcessedData(value, 'value B'));
注意事项

Array.every()要求回调函数返回布尔值:返回true表示当前元素符合条件,继续遍历;返回false则立即终止遍历。原代码中的return;会被视为返回undefined,等同于false,需根据实际业务逻辑调整返回值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:10:11