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

关于JavaScript arr.every()方法第二个参数thisArg的技术咨询

关于JavaScript Array.every()中thisArg参数的访问问题

嘿,很高兴你注意到了every()方法里的这个可选参数!我来帮你把关于thisArg的访问问题说清楚。

首先,先把你查到的文档描述放在这里:

执行回调函数时用作this的值。如果向every()传入thisArg参数,它将被用作回调函数的this值;否则,this值为undefined。回调函数最终可观察到的this值,由确定函数this指向的常规规则决定。

接下来分情况说明你关心的访问问题:

  • 普通函数回调:可以正常访问
    当你给every()传入thisArg参数,并且回调是普通函数时,回调里的this就会指向这个thisArg,直接用this就能访问到它的属性或值。举个实际的例子:
    const checkObj = { minValue: 5 };
    const nums = [6, 8, 3];
    
    const allMeetRequirement = nums.every(function(num) {
      return num >= this.minValue; // 这里的this就是checkObj
    }, checkObj);
    
    console.log(allMeetRequirement); // false,因为3小于5
    
  • 箭头函数回调:无法通过this访问
    箭头函数不会绑定自己的this,它会继承外层作用域的this值。所以哪怕你给every()传了thisArg,箭头函数回调里的this也不会指向它,而是沿用外层的this。比如:
    const checkObj = { minValue: 5 };
    const nums = [6, 8, 3];
    
    const allMeetRequirement = nums.every((num) => {
      // 这里的this是外层作用域的this,不是checkObj
      return num >= this.minValue; 
    }, checkObj);
    
  • 未传入thisArg时的情况
    如果没传thisArg,普通函数回调在严格模式下this是undefined,非严格模式下会指向全局对象(浏览器里是window,Node.js里是globalThis);箭头函数则依然继承外层作用域的this。

总的来说,能不能通过this访问到thisArg,核心在于你用的回调函数类型——普通函数可以正常获取,箭头函数则不行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:29:07