为什么这两个不同的代码产生不同的结果?使用回调的函数上下文
我的意思是在第一个代码中定义的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