Note icon indicating copy to clipboard operation
Note copied to clipboard

this问题

Open brucefuqiming opened this issue 3 years ago • 1 comments

let name = 2222;
let obj = {
    name: 3333,
    a: function() {
        console.log(this.name); // 2222
    }
}
let func = obj.a;
func(); 

这里有问题,func()执行后,打印的是空字符串或undefined(注意:name变量是window对象上的保留变量,所以window.name默认是空字符串),并不是2222。

原因是name是let声明的,因为obj.a赋值给func执行的时候,this指向的是window,而let声明的对象并不存在于window上,所以输出为undefined。除非用var声明,才能达到本例描述的效果。

brucefuqiming avatar Apr 22 '22 06:04 brucefuqiming

哇去,你不说,我还真不知道呢,扑街

wsydxiangwang avatar Apr 22 '22 07:04 wsydxiangwang