Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谁能解释一下为什么在运行todos.pop()之后i=1而不是0;_Javascript - Fatal编程技术网

Javascript 谁能解释一下为什么在运行todos.pop()之后i=1而不是0;

Javascript 谁能解释一下为什么在运行todos.pop()之后i=1而不是0;,javascript,Javascript,我正在学习Javascript中的“循环” 谁能解释一下为什么在运行todos.pop()之后i=1而不是0 for(变量i=0;i

我正在学习Javascript中的“循环”

谁能解释一下为什么在运行todos.pop()之后i=1而不是0

for(变量i=0;i
  • var i=0
    -表示在第一次迭代中,
    i
    0
  • i
    -表示循环将继续,直到
    i
    变得大于或等于
    todos.length
    。例如,如果您有5个待办事项,则
    todo.length
    将为
    5
    。因此,循环将适用于
    i=0
    1
    2
    3
    4
    。但是由于
    5
    不小于
    5
    ,所以它不会运行第六次迭代
  • i++
    -表示每次迭代后,
    i
    将增加1。迭代-是循环体中的内容<代码>todos.pop()
    在本例中
  • 因此,如果您在运行此代码后得到
    i=1
    ,这意味着您的
    todos
    数组中有1(或2)个项目,并且循环只迭代了一次。像这样:

  • i=0
  • i
    ?=是
    i<1
    ?=是
    0<1
    ?-是的,运行循环体
  • 正在运行的循环体(
    todos.pop()
  • 运行
    i++
    ,现在
    i=1
  • i
    ?=是
    i<0
    (因为您
    pop
    ed了todos中的项目,所以现在长度为零)?=是
    1<0
    ?-不,终止循环

  • i
    每次迭代的增量
    todos.pop()
    不影响
    i
    ,但会减少
    todos.length


    循环将弹出数组中一半的元素,因为每次迭代
    i
    都会增加,但
    todos.length
    会减少。

    假设todos中有一个元素。这就是将会发生的事情

  • 您将i初始化为0
  • 在函数体中弹出一个待办事项
  • 它将迭代器i增加1(i++)
  • 在该循环的一次迭代结束时,i的值将为1

    不过,事情是这样的,因为随着循环的进行,todos.length会发生变化,因此循环的行为方式可能会让您感到奇怪

    假设你的数组中有2个元素(我猜这就是你的问题所在)

  • 你将i初始化为0
  • 你从待办事项中拿出一个
  • todos.length现在是1,i也是1
  • 循环停止,因为它不再小于todos.length

  • 什么是
    todos
    ?@RoboRobok我认为
    todos
    可能是for循环正在使用的数组?@GalaxyCat105这是肯定的,但我们不知道有多少元素可以解释它。我想这是因为
    todos
    在循环之前有一个元素。不确定你的困惑是什么。
    for (var i = 0; i < todos.length; i++) {
        todos.pop();
    }