Skip to content

连续 bind()多次,输出的值是什么?

js

var bar = function(){ console.log(this.x); } var foo = { x:3 } var sed = { x:4 } var func = bar.bind(foo).bind(sed); func(); //?

var fiv = { x:5 } var func = bar.bind(foo).bind(sed).bind(fiv); func(); //?


## 参考答案:

两次都输出 **3**。

在Javascript中,多次 `bind()` 是无效的。

更深层次的原因, `bind()` 的实现,相当于使用函数在内部包了一个 `call` / `apply` ,第二次 `bind()` 相当于再包住第一次 `bind()` ,故第二次以后的 `bind` 是无法生效的。