ホームページ  >  に質問  >  本文

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日前648

全員に返信(11)返信します

  • 怪我咯

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

    原来如此!!!

    返事
    0
  • キャンセル返事