我被什麼在這個簡單的代碼這發生困惑迷茫:通過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