爲什麼這兩個不同的代碼產生不同的結果?使用回調的函數上下文
我的意思是在第一個代碼中定義的foo2
和在第二個代碼中的callback
是相同的,它們在foo
內的相同上下文中執行。
首先代碼:
var foo = function() {
var bar = 2;
var foo2 = function() {
console.log("bar: ", bar);
}
foo2();
}
foo() // 2
二碼:
var foo = function (callback) {
var bar = 2;
callback();
}
var callback = function() {
console.log(bar);
}
foo(callback); // ReferenceError: bar is not defined
'bar'只在聲明函數'foo'的內部可見。在第二種情況下''foo'中沒有定義'callback'。 Google for'javascript closures'。 – biziclop 2012-02-25 22:40:40