请问以下JS代码会做什么样的输出
let a = 'w'
let obj = {
a: 'o',
print: function() {
console.log(this.a);
},
}
let p = obj.print;
obj.print();
p();
o、undefined
官方解析:
首先明确this指向无法传递,所以函数p的this是指向window,同时因为let声明的变量不会挂载到window上
所以是window下的a变量只能是undefined。
至于obj.print方法this指向的是obj所以输出的是obj里面的变量a的值即o。
将对象的方法赋值给变量后,this指向会丢失,所以会去全局环境中找,但此题a是let声明的,,故全局中没有a