为甚么wang会执行200次
var dog = function () {
return "wang";
};
var cat = function () {
return "miao";
};
(function () {
if (cat() === "miaomiao") {
dog = function () {
return "wangwang";
}
}
function cat() {
return "miaomiao";
}
})();
for (var i = 0; i < 10; i++) {
setTimeout(function () {
for (var j = 1; j <= i; j++) {
console.log(dog());
}
}, 1000 * i);
}
解答:
i并没有被立即执行函数包裹
因此当setTimeOut被调用的时候i 的值已经是10…
在双层for循环中 conslog()执行了10*10=100次,每次执行"wangwang"