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。递增时不会重新定义已初始化的表达式吗?
答案 0 :(得分:2)
外循环的每次迭代都会从头开始评估整个内循环(包括将 j 初始化为从零开始)。
答案 1 :(得分:1)
我无法理解的是为什么 j
在某些时候会打印 0。
这与您移动首字母 j
如下所示相同。
let n = 5;
let i = 0;
for ( ; i <= n; i++) {
let j = 0; //You move the initial `j` here
for (; j < i; j++) {
console.log(i, j);
}
}
如你所见,内循环结束后,i
会增加一个,然后下一次,j = 0
答案 2 :(得分:0)
第一次迭代:
i=0。在内循环中 j =0 初始化所以 j
第二次迭代:
i=1 。在内部循环 j=0 中。 check condition j
第三次迭代:
i=2 。在内部循环 j=0 中。 check condition j
这样嵌套的 for 循环就可以工作了。希望你理解。