提问人:wibbuffey 提问时间:1/29/2022 最后编辑:epascarellowibbuffey 更新时间:1/29/2022 访问量:121
有没有办法访问闭包内的“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));
答:
1赞
trincot
1/29/2022
#1
arguments
是一种特殊的野兽,在草率模式下遵循的规则与在严格模式下的规则不同。它类似于数组,但不是真正的数组。但是没有必要使用它。只需使用 rest 参数语法:
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]]
评论
0赞
wibbuffey
1/29/2022
谢谢!我不知道传播语法可以应用于函数参数。
0赞
Thomas
1/29/2022
@wibbuffey是的,从技术上讲,这不是传播语法,而是 rest 参数。
0赞
Keith
1/29/2022
@wibbuffey 另外,如果你愿意,你可以传播参数,.[1,2,3,4]
return [param1, param2, ...args]
0赞
wibbuffey
1/30/2022
@Keith是的,我知道你可以为此使用传播语法。那不是我想要的;返回值纯粹是一个示例。
下一个:只有最后一个元素被添加到数组中?
评论