javascript - 当第一个参数为 null 时,.bind() 与闭包相同吗?

标签 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 = something(1,2);
binded(3);

我对这种代码有点困惑,因为文档说它用于绑定(bind) this 但在这些情况下,第一个参数是 null。一段时间后,我得出了与闭包类似的结论,现在我想知道这是否只是编写相同内容的另一种方式。

最佳答案

在您的示例中,它的行为相同,因为两个函数都可以访问不再可编辑的封装值。

但一般来说,我会说闭包更强大,因为它不仅限于参数值。

此外,很高兴知道通过 toString 方法对绑定(bind)函数进行字符串化时,它们是[native code]

关于javascript - 当第一个参数为 null 时,.bind() 与闭包相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46774993/

相关文章:

javascript - Firebase Cloud Functions 运行 Python 脚本

javascript - 将 SELECT 宽度限制为父 TH 的宽度

javascript - 在对象中使用数学运算

javascript - jquery 缩放和轮播购物模块错误

javascript - 为什么 Firefox setInterval 回调参数与其他浏览器不同?

javascript - Mongodb 获取所有集合项的数组项计数

javascript - 如何在对象字面量中使用 promise

javascript - 如何安全地将 HTML 和其他符号转换/解析为简单文本?

javascript - javascript 中的正则表达式lookbehind

javascript - 焦点属性不适用于样式,但在焦点样式起作用之前