有没有办法访问闭包内的 "arguments" 对象?

Is there a way to access the "arguments" object inside of a closure?

我有一个闭包,我想从闭包内部访问参数闭包。这可能吗?

function outerFunction (param1, param2) {
  // Returns [param1, param2, [param1, param2]]
  return function innerFunction () { return [param1, param2, arguments] }
}

// [1, 2, [1, 2]]
console.log(outerFunction(1, 2)(3, 4));

arguments 是一种特殊的野兽,在草率模式下与严格模式下遵循不同的规则。它是 array-like,但不是真正的数组。但没有必要使用它。只需使用 rest parameter syntax:

function outerFunction (param1, param2) {
  return function innerFunction (...args) { 
    return [param1, param2, args];
  };
}

let result = outerFunction(1, 2)(3, 4);
console.log(result); // [1, 2, [3, 4]]