我的问题是关于以下代码:
let iterations = 0;
top: for (let i = 0; i < 5; i++) {
for (let j = 0; j < 5; j++) {
iterations++;
if (i === 2 && j === 2) {
break top;
}
}
}
console.log(iterations); // OUTPUTS: 13
我不确定这是一个对象、一个函数还是什么(我说的是top:
(,我也不知道OUTPUT是13,我知道它有2次迭代,但我的问题是,循环中的条件是否成立?还是不?为什么?
更新:这是一个标签。。。抱歉我的无知。
谢谢你和祝福。
top:
是外循环的名称,用于内部中断,以定义要中断的循环。
要知道它是如何工作的,请添加另一个输出:
let iterations = 0;
top: for (let i = 0; i < 5; i++) {
for (let j = 0; j < 5; j++) {
console.log(i, j)
iterations++;
if (i === 2 && j === 2) {
break top;
}
}
}
console.log(iterations);
现在你会得到:
0 0
0 1
0 2
0 3
0 4
1 0
1 1
1 2
1 3
1 4
2 0
2 1
2 2
这正好是13次迭代。内循环将两次达到其最大值,直到外循环达到2。
这两者都不是标签。来自MDN文档:
带标签的语句可以与break或continue语句一起使用。它是在语句前面加上一个标识符,你可以参考这个标识符