我很难找到我的头。 我知道范围链接,javascript中的回调函数,其值为这个中的回调函数和箭头函数。javascript这个封闭的外部函数有一个绑定'this'
在JavaScript中,闭包可以通过作用域链访问封闭函数的变量。那么为什么闭包不能通过Function.prototype.bind访问'this'的绑定函数?变量“this”不是范围链的一部分吗?
冉铬控制台中下面的代码:
a = 4;
b = 6;
function outer(){
function inner(){
console.log(`this.a is ${this.a} and this.b is ${this.b}`);
}
inner();
}
outer.bind({a:1,b:3})()
和控制台掀开:
this.a is 4 and this.b is 6
这是因为你有全局变量! inner内部的'this'仍然是访问全局变量的'window'。 – Li357
@AndrewLi好吧,我明白了,不应该内部访问外部的绑定a和b,因为它是一个闭包? – basum
不,因为你在封闭中访问'this'。它与外部功能无关。 – Li357