var obj = {
a: 10,
b: () => {
console.log(this.a); // undefined
console.log(this); // Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, frames: Window, …}
}
}
MDN中阐述:在箭头函数中,this
与封闭词法环境的this
保持一致。在全局代码中,它将被设置为全局对象
想问下封闭词法环境到底是什么环境?
MDN里不是有附例子说明吗?
意思就是在箭头函数中的this和箭头函数外的this是一致的。而且是绑定的,不受bind/call/apply干扰的
比如说
如果你的箭头函数的外层还是一个箭头函数的函数体那么继续往上查找this,直到全局作用域即最外层this既window【严格模式为undefined】。有点在作用域链中查找变量的感觉。