首頁  >  問答  >  主體

javascript闭包 - JavaScript循环内的闭包为什么返回的是最后一个值

错误写法

for(var i = 0; i < 10; i++) {
    setTimeout(function() {
        console.log(i);  
    }, 1000);
}

为什么这样写是错的

正确写法

for(var i = 0; i < 10; i++) {
    (function(e) {
        setTimeout(function() {
            console.log(e);  
        }, 1000);
    })(i);
}

为可以这样写?

for(var i = 0; i < 10; i++) {
    setTimeout((function(e) {
        return function() {
            console.log(e);
        }
    })(i), 1000)
}

为可以这样写?

PHP中文网PHP中文网2749 天前649

全部回覆(11)我來回復

  • 怪我咯

    怪我咯2017-04-10 15:46:11

    原来如此!!!

    回覆
    0
  • 取消回覆