本文系统讲解 JavaScript 中的循环控制与遍历机制。涵盖 for、while、do-while 的基础语法与执行逻辑,对比 for-in 与 for-of 在对象与数组遍历中的差异,并深入解析 break 与 continue 对循环流程的控制及潜在死循环风险,帮助开发者掌握高效且安全的代码遍历技巧。
for 循环
for 语句包含三个关键表达式:首先声明循环变量,其次判断循环继续的条件,最后更新循环变量的值。这三个表达式之间必须使用分号(;)进行分隔。
虽然 for 循环中的三个表达式均可省略,但分隔它们的两个分号(;;)是语法强制要求,不可缺失。
for 循环的执行机制为“先判断条件,后执行循环体”,这一行为特征与 while 循环完全一致。
for 循环的各表达式支持复杂结构:第二个表达式(条件判断)可通过逻辑与(&&)或逻辑或(||)连接多个判断条件;第一和第三个表达式则可使用逗号运算符分隔多个操作。
for(var num = 1;num<10;num++){
console.log(num);//1,2,3,4,5,6,7,8,9
}
while 循环
while 循环括号内的表达式可以接受任意数据类型,但在执行前会自动转换为布尔值。具体的类型转换规则如下。
① Boolean 类型:true 视为真,false 视为假; ② String 类型:空字符串转换为假,所有非空字符串均转换为真; ③ Number 类型:0 转换为假,所有非零数字均转换为真; ④ null、Undefined 或 NaN:全部转换为假; ⑤ Object 类型:全部转换为真。
var num = 1;//1、声明循环变量
while (num<10){//2、判断循环条件;
console.log(num);//3、执行循环体操作;
num++;//4、更新循环变量;
}
do-while 循环
while 循环的核心特征是“先判断条件,后执行代码块”。
do-while 循环的核心特征是“先执行代码块,后判断条件”。即使初始条件不满足,do-while 循环也保证至少执行一次,因此相比 while 循环,它多执行了一次操作。
var num = 10;
do{
console.log(num);//10 9 8 7 6 5 4 3 2 1 0
num--;
}while(num>=0);
console.log(num);//-1
循环的嵌套
在嵌套循环结构中,外层循环通常用于控制行数,内层循环用于控制列数。这种嵌套机制主要用于解决多行多列的数据结构处理问题。
for(var j=1;j<9;j++){
for(var i=0;i<j+1;i++){
document.write("*");
}
document.write("<br>");
}
遍历方法
for - in
for-in 语句专门用于遍历数组元素或对象的可枚举属性。
在 for-in 循环的每次迭代中,代码会对数组元素或对象属性执行一次指定的操作。
let obj={'name':'programmer','age':'22','height':'180'};
for(let i in obj){
console.log(i,obj[i])
}
for - of
for...of 循环适用的范围包括数组、Set 和 Map 数据结构、某些类数组对象(如 arguments 对象、DOM NodeList 对象)、Generator 对象以及字符串。
JavaScript 原有的 for-in 循环仅能获取对象的键名,无法直接获取键值。ES6 引入的 for...of 循环则允许直接遍历并获取键值。
数组操作示例
var arr = ['a', 'b', 'c', 'd'];
for (let a in arr) {
console.log(a); // 0 1 2 3
}
for (let a of arr) {
console.log(a); // a b c d
}
类数组对象的操作示例
// 字符串
var str = "hello";
for (let s of str) {
console.log(s); // h e l l o
}
// DOM NodeList对象
let paras = document.querySelectorAll("p");
for (let p of paras) {
p.classList.add("test");
}
// arguments对象
function printArgs() {
for (let x of arguments) {
console.log(x);
}
}
printArgs('a', 'b');// 'a' 'b'
循环控制语句
1、break:用于跳出当前所在的循环层,并继续执行循环体之后的代码。若存在多层嵌套循环,break 仅能跳出最内层的一层循环。 2、continue:用于跳过当前迭代中剩余的代码,直接进入下一次循环。① 在 for 循环中,continue 之后执行的是循环变量的更新语句(如 i++);② 在 while 和 do-while 循环中,continue 之后执行的是循环条件的判断。因此,在使用后两种循环时,必须确保 continue 语句位于变量更新语句之后,否则跳过更新步骤将导致死循环。
for(var i=0;i<10;i++){
if(i == 5){
break;
}
console.log(i);//0,1,2,3,4
}
for(var i=0;i<10;i++){
if(i == 5){
continue;
}
console.log(i);//0,1,2,3,4,6,7,8,9
}
本文介绍了 JavaScript 中主要的循环方式及遍历方法,更多相关 JS 循环与遍历内容可参考本站往期文章或继续浏览后续内容,感谢支持。