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

箭头函数无自身arguments却可访问参数,原理是什么?

箭头函数无自身arguments却能访问参数的原因

你的推测完全正确——箭头函数确实没有自身的arguments对象,它访问到的arguments就是外层(父级)非箭头函数的arguments对象。

这是箭头函数的核心设计特性之一:它不会创建自己的this、arguments、super或new.target绑定,这些变量都会从最近的非箭头函数外层作用域中继承而来。

用代码示例可以直观验证:

function outer(a, b) {
  const arrow = () => {
    console.log(arguments); // 输出 outer 函数的 arguments: [1, 2]
  };
  arrow();
}
outer(1, 2);

如果箭头函数外层没有非箭头函数(比如直接定义在全局作用域),访问arguments会报错(严格模式下),因为此时找不到可继承的外层arguments,而全局作用域在严格模式中不存在arguments对象:

'use strict';
const globalArrow = () => {
  console.log(arguments); // 抛出 ReferenceError: arguments is not defined
};
globalArrow();

另外提一句:ES6开始更推荐用**剩余参数(...args)**替代arguments,它对普通函数和箭头函数都适用,语义也更清晰:

function outer(a, b) {
  const arrow = (...args) => {
    console.log(args); // 这里的 args 是箭头函数自身的参数数组:[3, 4]
  };
  arrow(3, 4);
}
outer(1, 2);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 16:09:59