Javascript for loop产生意想不到的结果

Javascript for loop producing unexpected results

本文关键字:意想不到 结果 for loop Javascript      更新时间:2023-09-26

我写了下面的循环:

for (i = 10; i--; i > 5) {
  console.log(i);
}

这会将其输出到控制台:

9
8
7
6
5
4
3
2
1
0

谁能告诉我为什么要这样做?

我看了一下,似乎这只是一个必须使用 for 循环的第三个参数而不是第二个参数递增的简单问题,但我对记录到控制台的数字很着迷。谁能给我一个简单的解释,为什么它会输出它所做的数字?

for loop具有以下结构:

for (initial condition ; termination condition ; incremental condition)

在您的for loop中,终止和增量条件是交换的(!

for (i = 10; i--; i > 5)

那是:

initial condition: i = 10
termination condition: i-- !!!
incremental condition: i > 5 ??? Does not do incremental

然后,只要终止条件返回true(即i > 0时(,循环就会继续。

由于初始值为 10i 只有在i--执行 10 次后才会变得0,因此返回的结果是:

9 8 7 6 5 4 3 2 1 0

总共 10 个循环。

循环没有按预期完成,因为只有当i == 0时才Boolean(i--) false;简而言之,你在循环中错放了比较和动作

问题现已更正,因此忽略: 首先,你错了 - 它不会产生你:)指示的输出。相反,它会产生以下内容:

for (i = 11; i--; i > 5) {console.log(i);}
// 10 9 8 7 6 5 4 3 2 1 0

它以 10 开头,而不是从 9 :)开始。

其次,不允许更改 for 块中语句的顺序。相反,您必须指定它们,如下所示:

for (i = 11; i > 5; i--) { console.log(i); }
// 11 10 9 8 7 6

第三(也是最重要的(:

  1. 你把一个起始值放在i;任何你想要或需要的值。
  2. 然后创建检查是否继续循环的条件。
  3. 第三条语句通常用于递增或递减i