理解 javascript 嵌套 for 循环的问题

Problems in understanding javascript nested for loops

我试图理解嵌套循环javascript中,但它非常混乱。

我有这段代码,但我不明白它是如何工作的:

let n = 5;
for (let i = 0; i < n; i++) {
    for (let j = 0; j < i; j++) {
    console.log(j);
}}

在控制台我有:0 1个 0 1个 2个 0 1个 2个 3

我正在尝试找出哪个循环代表每个数字。

运行 这段代码:

let n = 5;
let str = '';
for (let i = 0; i < n; i++) {
    for (let j = 0; j < i; j++)
        str += j;
   
   console.log("Outer: "+i+" Inner: "+str);
   str = '';
}

输出为:

Outer: 0 Inner: 
Outer: 1 Inner: 0
Outer: 2 Inner: 01
Outer: 3 Inner: 012
Outer: 4 Inner: 0123

如您所见,在上面的输出中,内部循环(带有变量 j 的循环)没有 运行,因为如果您用数字替换变量,它将是 0 < 0 (i < 0),这是不正确的。

了解嵌套循环如何工作的最好方法是在纸上写下每个步骤和变量值,如下所示:

n = 5

第 1 步:

  • 我=0
  • i < n (0 < 5) 真
    • j = 0
    • j < i (0 < 0) FALSE 内循环不执行
  • 输出:"Outer: 0 Inner:"
  • str = ''

第 2 步:

  • 我=1
  • 我 < n (1 < 5) 真
    • j = 0
    • j < i (0 < 1) 真
    • str = 0
    • j = 1 (j++)
    • j < i (1 < 1) 假
  • 输出:"Outer: 1 Inner: 0"
  • str = ''

依此类推...不断重复直到外循环中的参数为假 (i < n)。

你必须记住,在for循环中执行的命令顺序:

for(let i = 0; i < 5; i++) {
  console.log('It works');
}
  1. 令i = 0; (这只执行一次)

  2. i < 5(如果为真 运行 3 和 4)

  3. 运行循环中的代码

  4. 我++

  5. i < 5(如果为真 运行 6 和 7)

  6. 运行循环中的代码

  7. i++

等等