返回课程

循环会显示哪些值?

重要性:4

对于每次循环迭代,写下它输出的值,然后将其与解决方案进行比较。

两个循环都alert相同的值,还是不同?

  1. 前缀形式++i

    let i = 0;
    while (++i < 5) alert( i );
  2. 后缀形式i++

    let i = 0;
    while (i++ < 5) alert( i );

此任务演示了后缀/前缀形式在比较中使用时如何导致不同的结果。

  1. 从 1 到 4

    let i = 0;
    while (++i < 5) alert( i );

    第一个值是i = 1,因为++i首先递增i,然后返回新值。因此,第一个比较是1 < 5alert显示1

    然后依次是2, 3, 4… – 值一个接一个地显示。比较始终使用递增后的值,因为++在变量之前。

    最后,i = 4递增到5,比较while(5 < 5)失败,循环停止。因此,5没有显示。

  2. 从 1 到 5

    let i = 0;
    while (i++ < 5) alert( i );

    第一个值再次是i = 1i++的后缀形式递增i,然后返回值,因此比较i++ < 5将使用i = 0(与++i < 5相反)。

    alert调用是独立的。它是另一个在递增和比较之后执行的语句。因此,它获取当前的i = 1

    然后依次是2, 3, 4…

    让我们在 i = 4 时停止。前缀形式 ++i 会先递增 i,然后在比较中使用 5。但这里我们使用的是后缀形式 i++。所以它会将 i 递增到 5,但返回旧值。因此,比较实际上是 while(4 < 5) - 为真,控制流程继续执行 alert

    i = 5 是最后一个值,因为在下一步 while(5 < 5) 为假。