"use strict";
const a=[1,2,30];
const b=[4,5,60];
const c=[7,8,90];
a.forEach((function (){
console.log(this);
}).bind(globalThis),b);
这段代码有bind的this绑定,也有foreach第二个参数的this绑定。结果是输出全局对象,所以是bind的绑定生效。应该怎么理解这个结果呢?如果说bind绑定发生在词法阶段,那么可以确定它是在函数声明的时候就确定了,并且由于是硬绑定,后面的重新绑定也无法再影响到它。但是问题是,foreach参数的this绑定好像也是在词法阶段就确定的。这样的话,到底是以哪个绑定为准?不给出输出的话怎么判断this的指向?
给你捋一下执行顺序
可以看到运行funcB并把funcB里的this指向b,在运行funcA并把funcA里的this指向gthis