break 和 continue 都是用来控制循环结构的,主要是停止循环。 return 并非专门用于结束循环的,他的功能是结束一个方法。当一个方法执行到一个 return 语句时,这个方法将被结束

break

break 用于完全结束一个循环,跳出循环体。不管是哪种循环,一旦在循环体中遇到 break,系统将完全结束循环,开始执行循环之后的代码。

for 循环

  1. const str = 'hello';
  2. for (var item of str){
  3. if(item === 'l'){
  4. break;
  5. }
  6. console.log(item); // h e
  7. }

while 循环

const s = 'adg';
let i = 0;
while(i < s.length) {
  console.log(i); // 0

  if (i = 1) {
    break;
  }

  i++;
}

switch

var d=new Date().getDay();
switch (d)
{
    case 6:x="今天是星期六";
    break;
    case 0:x="今天是星期日";
    break;
    default:
    x="期待周末";
}
document.getElementById("demo").innerHTML=x;

默认结束掉离其相近的那一层循环

const s = 'adg';

for (let i = 0; i < s.length; i++) {
  for (let j = 0; j < s.length; j++) {
    if (j === 1) {
      break; // 只会终止内层循环,不会终止外层循环
    }

    console.log(`${i}-${j}`); // 0-0 1-0 2-0 
  }
}

break 不仅可以结束其所在的循环,还可结束其外层循环。此时需要在 break 后紧跟一个标签,这个标签用于标识一个外层循环

const s = 'adg';
available:for (let i = 0; i < s.length; i++) {
  for (let j = 0; j < s.length; j++) {
    if (j === 1) {
      break available;
    }
    console.log(`${i}-${j}`) // 0-0
  }
}

continue

continue 和 break 有点类似,区别在于 continue 只是终止本次循环,接着还执行后面的循环,break 则完全终止循环。可以理解为 continue 是跳过当次循环中剩下的语句,执行下一次循环。

const str = 'hello';
for (var item of str){
  if(item === 'l'){
    continue;
  }

  console.log(item);  // h e o
}

使用 break 的时候,我们直接跳出循环体。而当使用 continue 的时候呢,我们只是跳出了这一次的循环,并没有跳出循环体,循环还在继续

continue 也只能结束掉离其相近的那一层循环

const s = 'adg';

for (let i = 0; i < s.length; i++) {
  for (let j = 0; j < s.length; j++) {
    if (j === 1) {
      continue; 
    }
    console.log(`${i}-${j}`); // 0-0 0-2 1-0 1-2 2-0 2-2
  }
}

若想结束其它层循环需要加一个标签

const s = 'adg';
available:for (let i = 0; i < s.length; i++) {
  for (let j = 0; j < s.length; j++) {
    if (j === 1) {
      continue available;
    }
    console.log(`${i}-${j}`)
  }
}

这样即可结束掉指定层的循环

return

return 并非专门用于结束循环的,他的功能是结束一个方法。当一个方法执行到一个return语句时,这个方法将被结束

return 关键字的使用

  • 使用范围:使用在方法体中
  • 作用:① 结束方法 ② 针对于有返回值类型的方法,使用”return 数据”方法返回所要的数据。
  • 注意点:return关键字后面不可以声明执行语句

**
与 break 和 continue 不同的是,return 直接结束整个方法,不管这个 return 处于多少层循环之内

function testReturn() {
  for (let i = 0; i < s.length; i++) {
    for (let j = 0; j < s.length; j++) {
      if (j === 1) {
        return j; // 结束整个方法
      }

      console.log(`${i}-${j}`); // 0-0
    }
  }
}

testReturn();