this指向问题,为什么这里的this指向的是全局而不是被调用的地方?

var a = 1;
function foo() {
    var a = 2;
    this.bar();
}

function bar() {
    var a = 3;
    console.log(this.a);
}

foo(); // 1
阅读 2.9k
4 个回答

这样你就清楚了
你从头到尾都是在window这个this里调用的

window.a = 1;
function foo() {
var a = 2
window.bar()
}

function bar(){
var a = 3;
console.log(window.a)
}

window.foo()

为什么调用时,内部this会指向全局,你可以理解为这是js最初的一种设计缺陷,独立的函数调用,默认是指向全局window。

如果你想合理化理解,可以理解为foo定义在全局,默认也属于window的属性,foo()调用就等同于window.foo(),自然this也就是window了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题