for循环
continue
:跳出本次循环。
let arr = ['q', 'w', 'e', 'r', 't'];
for (var i = 0; i < arr.length; i++) {
if (i == 2) {
continue;
}
console.log(arr[i]); // q w r t
}
当i==2时,跳出本次循环,本次循环下面的代码不在执行。但是整个循环继续执行,直到循环条件为false。
break
:跳出整个循环。
let arr = ['q', 'w', 'e', 'r', 't'];
for (var i = 0; i < arr.length; i++) {
if (i == 2) {
break;
}
console.log(arr[i]); // q w
}
当i == 2时,使用break跳出整个循环,后面的循环条件不在执行,直接退出整个循环。
jquery的each循环
return true
:退出当前循环(相当于for循环中的continue)。
let arr = ['q', 'w', 'e', 'r', 't'];
$.each(arr, (k, v) => {
if (k == 2) {
return true;
}
console.log(v); // q w r t
})
当k == 2
时,退出当前循环,整体循环继续执行。
return false
:退出整个循环(相当于for循环中的break)。
let arr = ['q', 'w', 'e', 'r', 't'];
$.each(arr, (k, v) => {
if (k == 2) {
return false;
}
console.log(v); // q w
})
当k == 2
时,使用return false
,可以退出整个循环,后面的条件不在执行。
注:
1.$.each() 和forEach()的参数顺序不一样的。
2.each的用法
$.each(arr,(k,v)=>{})
arr.forEach((v,k)=>{})
// 错误的用法:数组没有each方法。只有$及其对象才有。
let arr = ['q', 'w', 'e', 'r', 't'];
arr.each((k, v) => {})
// 正确的用法:
$('body').each((k,v)=>{
console.log(v);
})
// 或者使用$.each也是ok的
$.each(arr,(k,v)=>{})
forEach循环
return
,return false
,return true
:退出当前循环。
let arr = ['q', 'w', 'e', 'r', 't'];
arr.forEach((v, k) => {
if (k == 2) {
return;
// return false;
// return true;
}
console.log(v); // q w r t
})
try-catch
:退出整个forEach循环
let arr = ['q', 'w', 'e', 'r', 't'];
try {
arr.forEach((v, k) => {
if (k == 2) {
throw 'ks-退出';
}
console.log(v); // q w
})
} catch (e) {
console.log(e); // ks-退出
}
console.log('其他的部分'); // 会执行
例子分析
let currentValue: any = 0;
let arr = [
{id: 'a', key: 1, value: 111,},
{id: 'b', key: 2, value: 222,},
{id: 'c', key: 3, value: 333,},
];
arr.forEach((v, k) => {
if (v.id == 'b') {
currentValue = v.value;
return false;
} else {
currentValue = arr[0].value;
}
})
console.log(currentValue);
最终currentValue的值为多少?
let currentValue: any = 0;
let arr = [
{id: 'a', key: 1, value: 111,},
{id: 'b', key: 2, value: 222,},
{id: 'c', key: 3, value: 333,},
];
try {
arr.forEach((v, k) => {
if (v.id == 'b') {
currentValue = v.value;
throw 'error';
} else {
currentValue = arr[0].value;
}
})
} catch (e) {
console.log(e); // error
}
console.log(currentValue);
或者使用for循环。
再参考下:
https://www.cnblogs.com/robinunix/p/11496285.html#_label0
https://www.jianshu.com/p/3726137ac1a6
问题:
1.continue跳过本次
2.break跳过本层
3.return 跳过该循环体