我已经多次看到这样的代码:
function something(a,b,c) {
return a+b+c // or something else with a,b,c
}.bind(null, 1, 2);
...
something(3);
这与返回闭包相同吗?
function something(a,b,c) {
return function(c) {
return a + b + c;
}
}
let binded = something(1,2);
binded(3);
我对这种代码有点困惑,因为文档说它用于绑定(bind) this
但在这些情况下,第一个参数是 null
。一段时间后,我得出了与闭包类似的结论,现在我想知道这是否只是编写相同内容的另一种方式。
最佳答案
在您的示例中,它的行为相同,因为两个函数都可以访问不再可编辑的封装值。
但一般来说,我会说闭包更强大,因为它不仅限于参数值。
此外,很高兴知道通过 toString
方法对绑定(bind)函数进行字符串化时,它们是[native code]
。
关于javascript - 当第一个参数为 null 时,.bind() 与闭包相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46774993/