常用循环与迭代语句:
for 语句
do...while 语句
while 语句
labeled 语句
break 语句
continue 语句
for...in 语句
for...of 语句
do...while语句
var i = 5;
do {
i += 1;
console.log(i);
} while (i < 5);
label语句
label 语句的语法看起来像这样:
label :
statement
label 的值可以是任何的非保留字的 JavaScript 标识符, statement 可以是任意你想要标识的语句(块)。
**break label 等价于 return
continue label 等价于 break**
eg:
未添加 Label:
var num = 0;
for (var i = 0 ; i < 10 ; i++) {
for (var j = 0 ; j < 10 ; j++) {
if( i == 5 && j == 5 ) {
break;
}
num++;
}
}
alert(num);
添加 Label 后:
var num = 0;
outPoint:
for (var i = 0 ; i < 10 ; i++){
for (var j = 0 ; j < 10 ; j++){
if( i == 5 && j == 5 ){
break outPoint;
}
num++;
}
}
alert(num);
使用 continue 语句,则可达到与未添加 label 相同的效果,但在这种有多层循环的情况下,循环的跳出进入流程更为明晰一些:
var num = 0;
outPoint:
for(var i = 0; i < 10; i++) {
for(var j = 0; j < 10; j++) {
if(i == 5 && j == 5) {
continue outPoint;
}
num++;
}
}
alert(num);
for...in和for...of语句
for...in 获得的是对象的属性(key)或者数组的下标(数组不推荐使用,数组推荐使用for...of或者forEach)
for...of 语句在可迭代对象(包括Array、Map、Set、arguments 等等)不能在object上使用,获得是对象的元素(value)
let a = [1, 2, 3];
for (let i in a) {
console.log("in", i);
}
for (let k of a) {
console.log("of", k);
}
let b1 = { num: 4 };
for (let i in b1) {
console.log("in", i);
}
let b2 = new Map();
b2.set("num", 5);
for (let k of b2) {
console.log("of", k);
}