一: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