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
用于部分预应用函数的某些参数,其结果是以后可以更简洁地重复使用函数。