break 和 continue 都是用来控制循环结构的,主要是停止循环。 return 并非专门用于结束循环的,他的功能是结束一个方法。当一个方法执行到一个 return 语句时,这个方法将被结束
break
break 用于完全结束一个循环,跳出循环体。不管是哪种循环,一旦在循环体中遇到 break,系统将完全结束循环,开始执行循环之后的代码。
for 循环
const str = 'hello';
for (var item of str){
if(item === 'l'){
break;
}
console.log(item); // h e
}
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();