为什么这里的this不同

在撸代码的时候遇见这个问题了。各位大神请帮我看下。谢谢了。

(function(){
    var name = 'Tom';
    console.log(this);//window--------------------------(1)
    console.log(this.name);//空-------------------------(2)
})();
var age = "22"
console.log(this);//window------------------------------(3)
console.log(this.age);//22------------------------------(4)

为什么(2)这个地方会输出是空?而不是Tom
为什么(4)这个地方会输出22?
打印出来的this都是window。这两个this有什么不同么?
为什么出现这个情况?
麻烦各位大神指点下。前端小白,感激不尽。

阅读 1.1k
评论
    9 个回答

    两个this都是window
    第一个this.name为空是因为没有window.name,里面的name是局部变量,不是window.name
    第二个this.age为22是因为age是全局变量,相当于window.age

    var window.age;
    (function(){
        var name = 'Tom'; //这里name 是局部变量,不会变量提升
        console.log(this);//window--------------------------(1)
        console.log(this.name);//空-------------------------(2)
    })();
    window.age = "22";
    console.log(this.age);//22------------------------------(4)
      相似问题
      推荐文章