JS中的几种循环和跳出方式

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循环
  • returnreturn falsereturn 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 跳过该循环体

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值