Javascript 当第一个参数为null时,.bind()是否与闭包相同?
我已经多次看到类似这样的代码:Javascript 当第一个参数为null时,.bind()是否与闭包相同?,javascript,Javascript,我已经多次看到类似这样的代码: 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 = someth
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);
我对这种代码有点困惑,因为文档中说它用于绑定
this
,但在这种情况下,第一个参数是null
。过了一段时间,我得出了类似于结尾的结论,现在我想知道这是否只是写同样东西的另一种方式 在您的示例中,它的行为是相同的,因为两个函数都可以访问不再可编辑的封装值
但通常我会说闭包更强大,因为它不仅限于参数值
另外,当通过
toString
-方法对绑定函数进行字符串化时,最好知道绑定函数是[本机代码]
。在您的示例中,它的行为相同,因为两个函数都可以访问不再可编辑的封装值
但通常我会说闭包更强大,因为它不仅限于参数值
另外,当通过
toString
-方法对绑定函数进行字符串化时,最好知道绑定函数是[本机代码]
。我认为您可以将其称为外来函数。我不知道确切的定义,但我相信它只是在函数运行时将参数绑定到函数的范围。我们将其用于依赖项注入,以将所有依赖项都放入根范围
指定了null
,因为参数未绑定到任何特定上下文,所以您的示例相当于从something()
内部查看调用something(3,1,2)
,但运行它时不需要声明1,2
下面是一个很好的视频,它展示了一个在实践中使用的示例:(大约从7分钟开始)。我想你可以称它为一个奇特的函数。我不知道确切的定义,但我相信它只是在函数运行时将参数绑定到函数的范围。我们将其用于依赖项注入,以将所有依赖项都放入根范围 指定了
null
,因为参数未绑定到任何特定上下文,所以您的示例相当于从something()
内部查看调用something(3,1,2)
,但运行它时不需要声明1,2
下面是一个很好的视频,它展示了一个在实践中使用的示例:(大约7分钟开始)。使用
.bind
,此
将绑定到null
,并且无论如何调用函数,都不能再进行更改。在关闭情况下,仍然可以设置此。当然,如果函数不使用这个
也没关系。它似乎是一种咖喱模式.bind
用于部分预应用函数的某些参数,其结果是以后可以更简洁地重复使用函数。使用.bind
,此
将被绑定到null
,并且无论函数如何调用,都不能再进行更改。在关闭情况下,仍然可以设置此。当然,如果函数不使用这个
也没关系。它似乎是一种咖喱模式.bind
用于部分预应用函数的某些参数,其结果是以后可以更简洁地重复使用函数。