javascript - 当涉及到使用 .bind() 的函数柯里化(Currying)时,this 变量的作用是什么?

标签 javascript functional-programming bind currying

我遇到了以下 JS 代码 (ES5) 我真的不明白这个变量的含义是什么。

function multiply(a,b){
  return a * b;
}

var multipleByThree = multiply.bind(this,3);

multipleByThree(10) // outputs 30

我知道 bind 复制乘法函数,它的“a”参数的值为 3。但是这个变量的目的是什么?

你能帮帮我吗?

最佳答案

您提供给 .bind()this 变量是上下文。在您的例子中,this 指的是全局对象空间。

这是一个如何工作的例子:

var message = 'within global context';
function multiply(a,b){
  console.log(this.message);
  return a * b;
}

var someOtherContext = {
  message: 'within some other context'
};

var multipleByThree = multiply.bind(this,3);
var multipleByThreeOtherContext = multiply.bind(someOtherContext, 3);

console.log(multipleByThree(10))
console.log(multipleByThreeOtherContext(10))

通过改变 multiply 在其中执行的上下文,我们可以改变它引用的变量。

关于javascript - 当涉及到使用 .bind() 的函数柯里化(Currying)时,this 变量的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46324103/

相关文章:

java - 为什么 java.util.Collection 不实现新的 Stream 接口(interface)?

scala - 懒惰的 val vs. Scala 中递归流的 val

javascript - 如何在 JavaScript 中使用链而不应用反模式?

javascript - 绑定(bind)超出范围的变量可以加速您的代码吗?

javascript - 新手: Need explanation of a Js function

javascript - JS try 不会捕获抛出的错误

javascript - 如何将嵌入的 YouTube 视频静音?音量 = 0 不起作用

javascript - ngFor 中组件的无效动画

AngularJS 观察者未绑定(bind)/观察

jquery - KineticJS:通过 .on() 监听