Я понимаю, что происходит с этой в этом простом коде:Confused этим поведением JavaScript в конкретной ситуации
function foo() {
alert(this.a);
}
function doFoo(fn) {
a = "local";
fn();
}
var a = "global";
doFoo(foo);
Из того, что я узнал, deFoo контекст объект, из которого Foo называется так, что сообщение предупреждения должно быть «локальным». Это работает, если я не объявить в внутри doFoo:
function doFoo(fn) {
var a = "local";
fn();
}
Теперь предупредительное сообщение является «глобальным». Может кто-то объяснить это мне? Я новичок в Javascript.
https://github.com/getify/You-Dont-Know-JS/tree/master/scope%20% 26% 20closures – cbass
Возможный дубликат [Как работают блокировки JavaScript?] (Http://stackoverflow.com/questions/111102/how-do-javascript-closures-work) –
'this' является сумасшедшим ... – openwonk