return,break,continue易错总结

一:return、continue、break在for循环中的作用

1、return:指的是跳出for循环,且不执行for循环之外的语句,直接跳出当前函数,返回return后的值。return语句只能出现在函数体内,出现在代码中的其他任何地方都会造成语法错误!

 2、break:指的是跳出for循环本身,不再进行之后的循环,但可以执行for循环之外的语句。

3、continue:指的是跳出当前循环,即不执行continue后的语句,直接进入下次循环。

for(let i=0; i< 10; i++){
    if(i ==3){
        return; // 这里的return没在方法内,报错
    }
}
// 结果: Uncaught SyntaxError: Illegal return statement

function fn(){
    for(let i=0; i<10; i++){
       if(i ===3 ){
          return; // 跳出for循环,且不执行for循环之外的语句(不会打印out::),直接跳出当前函数
       }
        console.log('i:', i)
    }
    console.log('out::');
}
fn();// 0 1 2
function fn1(){
    for(let i=0; i<10; i++){
        for(let j=0; j<10; j++){
           if(i ===3 ){
              return;// 跳出for循环,且不执行for循环之外的语句,直接跳出当前函数,内部循环和外部循环都退出
           }
            console.log('j:', i, j)
        }
        console.log('i:>', i)
    }
}
'i:>' 0
'i:>' 1
'i:>' 2


// #### break在for中的例子
function fnBreak(){
    for(let i=0; i<10; i++){
        for(let j=0; j<10; j++){
           if(i ===3 ){
              break;// 这个时候break和continue的效果是一样的了
           }
            console.log('j:', i, j)
        }
       console.log('i:>', i)
    }
}
fnBreak();
// 'j:' 0 到 9
// 'i:>' 0
// 'j:' 0 到 9
// 'i:>' 1
// 'j:' 0 到 9
// 'i:>' 2
// 因为i===3了 所以跳出当前所在的for循环,执行当前for循环之后的内容;
// 'i:>' 3
// ...

for(let j=0; j<10; j++){
    if(j ===3 ){
        break; // 跳出for循环本身,不再进行之后的循环,但可以执行for循环之外的语句
    }
    console.log('j:', j)
}
// j: 0
// j: 1
// j: 2

for(let j=0; j<10; j++){
    if(j ===3 ){
        continue;// 跳出当前循环,即不执行continue后的语句,直接进入下次循环
    }
    console.log('j:', j)
}
// j: 0
// j: 1
// j: 2
// j: 4
// j: 5
// j: 6
// ...

二:return、continue、break在while循环中的作用

1、return语句会终止函数的执行并返回函数的值。

2、break 语句用于跳出循环体,继续执行循环体后面的语句

3、continue 用于跳过循环中的一个迭代。

(function () {
  let i = 0
  while (true) {
    if (i < 10) {
      i++
      console.log(i)
      continue
    }
    if (i >= 10){
      return; // 终止函数的执行并返回函数的值
    }
  }
  console.log('while done')
})()
//  1 2 3 4 5 6 7 8 9 10
// 解析:
// 结果console.log('while done')永远无法被打印,原因是当i<10时执行i++后直接continue本次循环继续下一次循环;
// 当i===10时直接return跳出当前函数体,所以console.log('while done')永远无法被执行。

(function () {
  let i = 0
  while (true) {
    if (i < 10) {
      i++
      console.log(i)
    }
    if (i >= 10){
      break // break 语句用于跳出循环,但可以执行for循环之外的语句
    }
  }
  console.log('while done')
})()      // 1 2 3 4 5 6 7 8 9 10 while done
// 解析:
// return改为break后,当i===10时跳出循环体,继续执行后面的语句,此时console.log('while done')可以被执行

三: return、continue、break在迭代器( forEach、map、filter,)里面的使用

1、return:指的是跳出当前循环,即不执行return后的语句,直接进入下次循环

2、 break,continue:不能用在forEach、map、filter、every、 some、find中

var a=[1,2,3];
 a.forEach((item,index,arr)=>{
    if(i>=2){ break;  };
    console.log(item);
 });
//结果是: Uncaught SyntaxError: Illegal break statement


a.forEach((item,index,arr)=>{
    if(i>=2){ continue; };
    console.log(item);
});
//结果 Uncaught SyntaxError: Illegal continue statement: no surrounding iteration statement

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值