首页  >  问答  >  正文

javascript - 为什么结果是3不是2呢?

雷雷
学习ing学习ing2672 天前708

全部回复(4)我来回复

  • 迷茫

    迷茫2017-06-26 10:59:37

    for(i=0;i<3;i++){循环体}执行过程是赋初值0,然后执行判断语句i<3,为true的话,执行循环体,循环体执行完之后执行i++;所以当i执行到2的时候,i<3为true,执行循环体,然后i++,此时i等于3,然后判断i<3,判断为false,不执行循环体,退出循环,此时i=3

    回复
    0
  • 巴扎黑

    巴扎黑2017-06-26 10:59:37

    最后一次for循环过后,i++把i变成了3

    回复
    0
  • PHP中文网

    PHP中文网2017-06-26 10:59:37

    此题用断点方式很容易就看出来了,其实就是函数执行时机的问题,函数是在调用时才执行,循环执行完后,i=3,再调用数组内的函数时,i只能为3.

    回复
    0
  • 学习ing

    学习ing2017-06-26 10:59:37

    js顺序执行,首先执行所有的循环,在执行的过程中以此arr[0]= function(){return i;},arr[1]= function(){return i;},arr[2]= function(){return i;}同时i循环后编程3,接着调用arr[0]()等调用的时候,此时作用域内的i是3,所以依次都会是3.

    PS: 这题应该会先执行arr = F()把,否则会报错呀~~

    回复
    0
  • 取消回复