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

箭头函数调用call方法传参为何仍返回window全局上下文

问题原因说明

这个现象是箭头函数的内置特性决定的,不属于执行异常:

  • 箭头函数不存在独立的this绑定,它内部的this直接继承函数定义位置外层作用域的this值,且继承后永久固定,无法被修改。
  • 我们常用的call、apply、bind方法只能修改普通函数运行时的this指向,传入箭头函数时,指定的this绑定参数会被直接忽略。
  • 你提供的代码里箭头函数定义在全局作用域下,全局作用域默认的this就是window对象,所以哪怕用call传入空对象,最终返回的还是全局的window。

你可以用普通函数做对照验证,普通函数下call的绑定逻辑是符合预期的:

// 普通函数版本
const f = function() { return this };
console.log(f.call({})); // 输出 {},符合预期

如果箭头函数定义在非全局作用域下,也会遵循同样的继承逻辑,不受call影响:

const testObj = {
  createArrow: function() {
    // 箭头函数定义时,外层this就是createArrow运行时的this,也就是testObj
    return () => this;
  }
}
const f = testObj.createArrow();
console.log(f.call({})); // 输出 testObj,而非传入的空对象

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:48:00