闭包规则是:函数使用定义时有效的作用域链执行。
在下面的 setTimeout 回调函数中,定义时 x 尚未在范围内。因此,程序应该打印 undefined,但打印的是 7,为什么?我错过了什么?
var foo = function () {
setTimeout(function (){
console.log(x);
}, 3000);
};
var x = 7;
foo();
还是因为上面的代码和下面的完全一样?
var x = 7;
var foo = function () {
setTimeout(function (){
console.log(x);
}, 3000);
};
foo();