循环会显示哪些值?
重要性:4
对于每次循环迭代,写下它输出的值,然后将其与解决方案进行比较。
两个循环都alert相同的值,还是不同?
-
前缀形式
++ilet i = 0; while (++i < 5) alert( i ); -
后缀形式
i++let i = 0; while (i++ < 5) alert( i );
此任务演示了后缀/前缀形式在比较中使用时如何导致不同的结果。
-
从 1 到 4
let i = 0; while (++i < 5) alert( i );第一个值是
i = 1,因为++i首先递增i,然后返回新值。因此,第一个比较是1 < 5,alert显示1。然后依次是
2, 3, 4…– 值一个接一个地显示。比较始终使用递增后的值,因为++在变量之前。最后,
i = 4递增到5,比较while(5 < 5)失败,循环停止。因此,5没有显示。 -
从 1 到 5
let i = 0; while (i++ < 5) alert( i );第一个值再次是
i = 1。i++的后缀形式递增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)为假。