说我有这种简单的情况:
const f = function(){
const fn = f.bind(null, arguments);
}
我正在尝试实现“重试”机制 - 此代码根据静态分析检出并且似乎是Function.prototype.bind
的签名,但我的问题是:
arguments
仅作为f
的第一个参数应用,还是会展开,如f.apply(null, arguments)
?我无法在网上找到这个例子。
答案 0 :(得分:2)
arguments
将作为f
的第一个参数传递。此外,如果您随后使用更多参数调用绑定函数,那么这些参数将在绑定函数之后(即,您无法覆盖该第一个参数)。
了解更多here
答案 1 :(得分:2)
.bind
的工作方式类似于.call
,而不是.apply
- 第二个参数将被视为第二个参数。所以在你的例子中:
f(1,2,3)
会产生fn([1,2,3])
答案 2 :(得分:-1)
是的,Function.prototype.bind
与[{1}}
所以你需要这样做:
Function.prototype.call
或
fn.bind(null, ...arguments);