传递回调时,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']
这两个函数为什么记录不同的值?