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.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
这样你就清楚了
你从头到尾都是在window这个this里调用的