常见循环语句
总结
- break:整个循环结束 continue:退出本次循环, 终止函数内循环执行
- 对于
for,for ... in,for ... of,while,do ... while,使用break,continue,return都终止循环。 - 对于
forEach,map,filter等数组方法,则需要使用throw Error抛出异常,并使用使用try,ctach保证报错后继续执行。
1.for语句
基本语法
// 括号中的三个条件都可省略
for ([initialExpression]; [condition]; [incrementExpression]) statement
注意:当condition为true时,执行顺序:
initialExpression->condition->statement->incrementExpression
终止条件
终止for循环的方式:break和continue ,return
break:整个循环结束 continue:退出本次循环, return终止函数内循环执行
let list = [1, 2, 3, 4]
for (let i = 0; i < list.length; i++) {
if (i == 1) {
continue
}
if (i == 2) {
break;
}
}
2.while循环
while (condition) statement
while循环特点:先判断后执行,当condition为true时,则执行statement
终止条件
终止for循环的方式:break和continue ,return
break:整个循环结束 continue:退出本次循环, return终止函数内循环执行
function searchArray(arr, target) {
let i = 0;
while (i < arr.length) {
if (arr[i] === target) {
return false;
}
if (arr[i] === target+1) {
break;
}
i++;
}
return -1;
}
3.do ... while语句
基本语法
复制代码
do
statement
while (condition);
do-while循环特点:先执行再判断,即使初始条件不成立,do-while循环至少执行一次,也就是说do-while循环比while循环多执行一次。
终止条件
终止for循环的方式:break和continue ,return
break:整个循环结束 continue:退出本次循环, return终止函数内循环执行
function searchArray(arr, target) {
let i = 0;
do {
i++;
console.log(i)
if(i===5){
return false
}
if(i===5){
break
}
} while (i < 10)
return -1;
}
4.for…of和for…in语句
注意:for…in循环将遍历对象本身的所有可枚举属性,以及对象从其构造函数原型中继承的属
终止条件
终止for循环的方式:break和continue ,return
break:整个循环结束 continue:退出本次循环, return终止函数内循环执行
function FroIn(arr, target) {
let obj={'name':'abc','age': 22,'height':'180'};
for(let i in obj){
console.log(i,obj[i])
if(obj[i]===22){
continue
}
if(obj[i]===22){
return false
}
if(obj[i]==='abc'){
break
}
}
}
function FroOf(arr, target) {
var arr = ['a', 22, 'c', 33];
for(let i of arr){
console.log(i)
if(i===22){
continue
}
if(i==='c'){
return false
}
if(i==='c'){
break
}
}
}
4.map和forEach,filter等
终止条件
forEach,map,filter等语句使用break和continue ,return无效,如果需要中断循环,则应考虑throw Error。
try {
Array(10)
.fill('')
.map((item, i) => i)
.forEach((item, i) => {
console.log(i)
if (i == 5) {
// break; // Uncaught SyntaxError: Illegal break statement
// return false // 无效
throw Error('error') // 有效,并报错,VM555:9 Uncaught Error: error
}
})
console.log('end') // 未执行 throw Error 中止
} catch (e) {
if (e.message != 'error') throw e
}
console.log('next') // 使用try,ctach保证报错后继续执行