其余参数与参数对象

时间:2018-08-12 20:22:08

标签: javascript arguments

传递回调时,arguments对象与使用rest参数创建的...args数组有何不同?我认为它们在大多数用例中都是可互换的(除了arguments对象会获得有关被调用者的额外信息等,并且这不是一个真正的数组)。但是,在传递回调函数时,我得到了不同的结果。为什么?考虑以下代码:

第一个代码:

function logFn(func) {
  return (function logArguments() {
    console.log(arguments);
  })('arguments', 'to', 'inner');
}

logFn('arguments', 'to', 'outer'); // logs ['arguments', 'to', 'inner'] (& callee etc.).

第二个代码:

function logFn(func, ...args) {
  return (function logArgs() {
    console.log(args);
  })('arguments', 'to',' inner');
}

logFn('arguments', 'to', 'outer'); // logs ['to', 'outer']

这两个函数为什么记录不同的值?

0 个答案:

没有答案