return,break,continue-傻傻分不清

本文详细解析了JavaScript中的break、continue和return语句的使用,包括它们在循环控制和函数执行中的作用。通过实例展示了如何利用这些语句来改变程序流程,以及它们在不同场景下的应用。此外,还提到了break与continue带有标签的用法,以及return语句在函数结束时的作用。
摘要由CSDN通过智能技术生成

对于前端初学者来说, 甚至说一些用了js蛮久的人来说, 对于如题所说的几个语句可能只是一知半解, 以至于有时候能达到预期目的, 有时候又有一些蜜汁结果, 今天就来捋它!

break

break 比较常用的用法, 就是用于终止循环, 可以用于终止 whileswitch 循环, 如下所示:

// while循环, 如:
let l=0,r=5
while(l<r) {
    l++;
    // 当l===2时终止循环
    if(l===2) break;
    console.log(l+r)
    r--
}

// switch
let num=1, status=''
switch (num){
      case 1: 
          status = 'good'
          break
      case 0:
          status = 'bad'
          break
      default:
          status = 'unknown'
}
console.log(status)
// 如果你不写break, 则这句判断里面写的语句执行完它还会往下执行

// 反过来就是说, 如果多个switch条件都是相同的处理方式, 可以这么写
switch (num){
      case 1: 
          status = 'good'
          break;
      case 0:
      case 2:
      default:
          status = 'unknown'
}
// 除了num===1外的所有情况都执行status = 'unknown'操作
// 因为其他 case 条件下没有 break 语句,不会终止循环,会一直往下执行到 default 里面定义的操作 

少见的情况是, break可以允许终止指定被标记语句, 也就是 break [label]

ps. 这里的语句不一定要循环语句, 可以是任何 {} 包括的块语句 (即你可以把几句语句定义为一个block)

// 终止 block
block1:{
  block2:{
    console.log ('1');
    break block1;      // 终止/跳出 block1
    console.log ('oops');    // 跳过
  }
  console.log ('2');        // 跳过
}

// switch示例
let num=1, status=''
switch1: switch (num){
      case 1: 
          status = 'good'
          // then break the labeled block
          break switch1
      case 0:
          status = 'bad'
          break
      default:
          status = 'unknown'
} 

注意: 该语句必须是嵌套在被标记语句内部, 并且不能在函数内, 才能正常终止, 否则报错, 如下面这种写法

let l=0,r=5
while(l<r) {
    (function() {
        if(l===2) break;  // Uncaught SyntaxError: Illegal break statement
    })()
    l++;
    r--
} 
continue

continue 的用法和限制都跟 break 类似, 但它是用于_中止本轮循环, 继续执行下一轮的迭代_, 如 for循环中控制流跳转到更新语句, while 循环中控制流跳转回条件判断

let l=0,r=5
while(l<r) {
    l++;
    // l===1的循环中止, 回到判断条件, 满足条件则继续往下执行下一轮循环
    if(l===1) continue;
    r--
}
// > 2,4
// > 3,3 

也可以指定 label, 如 continue [label] 指定要中止的代码块

return

终止函数执行, 同时可以返回一个指定值, 如果省略该值, 则返回undefined

无论 return 藏得有多深, 只要执行 return , 函数就要终止

function test() {
  for (var i = 1; i<10 ; i++) {  // 10次循环
    console.log('a'+i); // 执行5次
    if (i === 5) {
      // 第5次循环会被 return 终止,直接终止函数执行, 包括函数内的所有未执行的满足条件的循环
      return;
    }
    console.log('b'+i);  // 执行4次
  }
  console.log('c'+i);  // 这是同步语句,需要等到for循环执行完才轮到它, 但是for循环没有执行完就被return终止掉了, 所以这句不会执行
}

test();
// > a1
// > b1
// > a2
// > b2
// > a3
// > b3
// > a4
// > b4
// > a5 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值