问答详情
源自:3-1 [JavaScript]block语句、var语句

这段代码的执行结果是什么?

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

提问者:一别经年 2015-12-29 21:54

个回答

  • 但尽人事莫问前程
    2018-12-03 15:03:34

    var ==


  • 我依旧已久
    2018-10-16 08:51:28

    10个10,这个涉及到了函数的闭包和作用域,这里实际上只有一个i,循环的10个函数是共享一个i的引用,如果想输出0到9的话只需将var 改成 let 即可,这样就在函数每次执行的时候创建了一个闭包

  • yinyun
    2016-11-19 11:12:59

    10啊

  • 慕粉3830774
    2016-11-08 18:01:05

    你可以这样理解,先是for(vari= 0; i< 10; i++){}然后console.log(i)执行十次

    ,毕竟console.log(i)是延迟执行的,它也是个函数,只有当它执行的时候参数才开始传入的


  • 肉肉思密达
    2016-09-19 17:16:27

    for (var i=0; i<5; i++){

      (function(i){

          setTimeout(function(){

              console.log(i);

          },i*1000);

      })(i);

    }


  • Down_Up
    2016-04-30 16:20:09

    在执行setTimeout的时候,上面的i已经初始化完成了,此时i=10,所以。。。。。

  • 狂飙的蜗牛_1
    2015-12-29 22:15:55

    在控制台输出10个10;

    不是输出0到9;