var a = 1;
function foo() {
var a = 2;
this.bar();
}
function bar() {
var a = 3;
console.log(this.a);
}
foo(); // 1
var a = 1;
function foo() {
var a = 2;
this.bar();
}
function bar() {
var a = 3;
console.log(this.a);
}
foo(); // 1
为什么调用时,内部this会指向全局,你可以理解为这是js最初的一种设计缺陷,独立的函数调用,默认是指向全局window。
如果你想合理化理解,可以理解为foo定义在全局,默认也属于window的属性,foo()调用就等同于window.foo(),自然this也就是window了。
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答877 阅读✓ 已解决
3 回答1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
这样你就清楚了
你从头到尾都是在window这个this里调用的