我被什么在这个简单的代码这发生困惑迷茫:通过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' is crazy ... – openwonk