首页 > 解决方案 > 我需要清楚地解释这些嵌套的 For 循环

问题描述

let n = 5;

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

输出:

1 0
2 0
2 1
3 0
3 1
3 2
4 0
4 1
4 2
4 3
5 0
5 1
5 2
5 3
5 4

如果我没记错的话,一旦内循环完成执行,外循环就会增加,但我不明白为什么j在某些时候打印 0。递增时不会重新定义初始化的表达式吗?

标签: javascript

解决方案


外循环的每次迭代都会从头开始评估整个内循环(包括将 j 初始化为从零开始)。

  • 第一次外循环迭代:
    • 我设置为 0。
    • 第一次内循环迭代:
      • j 设置为 0。
      • 内循环条件 j < i 为 False,因为它们都为零。
      • 内部循环体不运行。
  • 第二次外循环迭代:
    • i 递增到 1。
    • 第二次外循环迭代中的第一次内循环迭代:
      • j 设置为 0。
      • (i=1,j=0) 记录到控制台
    • 第二次外循环迭代中的第一次内循环迭代:
      • j 递增到 1,内循环条件为 False。内循环不会第二次运行。
  • 第三次外循环迭代:
    • i 增加到 2。
    • 第三次外循环迭代中的第一次内循环迭代:
      • j 设置为 0。
      • (i=2,j=0) 记录到控制台
    • 第三次外循环迭代中的第二次内循环迭代:
      • j 加 1
      • (i=2,j=1) 记录到控制台
  • ... ETC

推荐阅读