t1
和t2
以不同的方式返回一个函数,一个普通函数还是一个箭头函数:
function t1(fn) {
return async function() {
console.log(arguments);
}
}
function t2(fn) {
return async () => {
console.log(arguments);
}
}
t1('t1: outer arg')('t1: inner arg');
t2('t2: outer arg')('t2: inner arg');
这让我感到惊讶,因为我认为函数的正常形式和箭头函数符号几乎可以互换。
$ node arguments_scope.js
[Arguments] { '0': 't1: inner arg' }
[Arguments] { '0': 't2: outer arg' }
为什么?