/*
循环:一轮一轮的重复做某一件事情(真实项目中一般应用于:循环一个集合或者控制循环处理的次数,每一轮循环都控制相关的事情执行一遍)
for(设置初始值;设置循环执行的条件,控制环次数;每一轮循环结束后的事情[步长累加]){
//循环体(每一轮循环都要做的事情)
}
执行顺序:
1.设置初始值
2.验证条件(条件不成立循环结束)
3.循环体
4.步长累加
5.再次验证条件
6.循环体
……
*/
for(let i = 0; i < 5; i++){
console.log(i);
/*
解析:设置初始值 i = 0;
验证条件 i是否小于5,小于则执行循环体内的语句console.log(i);//=> 0
步长累加 i++; i = 1;
再次验证条件 i < 5 ;执行循环体内的语句console.log(i);//=> 1
步长累加 i++; i = 2;
再次验证条件 i < 5 ;执行循环体内的语句console.log(i);//=> 2
步长累加 i++; i = 3;
再次验证条件 i < 5 ;执行循环体内的语句console.log(i);//=> 3
步长累加 i++; i = 4;
再次验证条件 i < 5 ;执行循环体内的语句console.log(i);//=> 4
步长累加 i++; i = 5;
再次验证条件 i =5 此时与判断条件不符,结束当前循环,不再执行;
*/
}
for(let i = 0; i < 5; i++){
if(i < 3){
i++;
}
console.log(`本轮循环i的值是:${i}`);
/*
解析:设置初始值 i = 0;
验证条件 i < 5; 执行循环体内容:判断i<3,i++;此时i++ = 1; console.log(`本轮循环i的值是:${i}`);//=>本轮循环i的值是:1
步长累加i++; i = 1+1 = 2;
验证条件 i < 5; 执行循环体内容:判断i<3,i++;此时i++ = 3; console.log(`本轮循环i的值是:${i}`);//=>本轮循环i的值是:3
步长累加i++; i = 3+1 = 4;
验证条件 i < 5; 执行循环体内容:i>3不在执行if语句; console.log(`本轮循环i的值是:${i}`);//=>本轮循环i的值是:4
步长累加i++; i = 4+1 = 5;
验证条件 i = 5; 不满足条件,结束当前循环。
*/
}
循环体中可能出现的两个关键字:
1. break:强制结束整个循环(循环体中一旦遇到break,整个循环都结束了,break下面代码不在执行,步长累计也不在执行)
2. continue:结束本轮循环,下一轮继续(循环体中一旦遇到continue,本轮循环结束,continue下面的代码不在执行,但是步长累计会执行)
for(let i = 0; i < 5; i++){
if(i > 3){
i++;
break;
}
console.log(`本轮循环i的值是:${i}`);
/*
解析:设置初始值 i = 0;
验证条件 i < 5;执行循环体,不符合if语句的条件,不执行if语句,console.log(`本轮循环i的值是:${i}`);//=>本轮循环i的值是:0
步长累加:i++; i = 0 + 1 = 1;
验证条件 i < 5;执行循环体,不符合if语句的条件,不执行if语句,console.log(`本轮循环i的值是:${i}`);//=>本轮循环i的值是:1
步长累加:i++; i = 1 + 1 = 2;
验证条件 i < 5;执行循环体,不符合if语句的条件,不执行if语句,console.log(`本轮循环i的值是:${i}`);//=>本轮循环i的值是:2
步长累加:i++; i = 2 + 1 = 3;
验证条件 i < 5;执行循环体,不符合if语句的条件,不执行if语句,console.log(`本轮循环i的值是:${i}`);//=>本轮循环i的值是:3
步长累加:i++; i = 3 + 1 = 4;
验证条件 i < 5;执行循环体,符合if语句的条件,执行if语句,i++ = 4 + 1 = 5,遇到break;则结束整个循环,不在执行。
*/
}
for(let i = 0; i < 5; i++){
if(i > 3){
i++;
continue;
}
console.log(`本轮循环i的值是:${i}`);
/*
解析:设置初始值 i = 0;
验证条件 i < 5;执行循环体,不符合if语句的条件,不执行if语句,console.log(`本轮循环i的值是:${i}`);//=>本轮循环i的值是:0
步长累加:i++; i = 0 + 1 = 1;
验证条件 i < 5;执行循环体,不符合if语句的条件,不执行if语句,console.log(`本轮循环i的值是:${i}`);//=>本轮循环i的值是:1
步长累加:i++; i = 1 + 1 = 2;
验证条件 i < 5;执行循环体,不符合if语句的条件,不执行if语句,console.log(`本轮循环i的值是:${i}`);//=>本轮循环i的值是:2
步长累加:i++; i = 2 + 1 = 3;
验证条件 i < 5;执行循环体,不符合if语句的条件,不执行if语句,console.log(`本轮循环i的值是:${i}`);//=>本轮循环i的值是:3
步长累加:i++; i = 3 + 1 = 4;
验证条件 i < 5;执行循环体,符合if语句的条件,执行if语句,i++ = 4 + 1 = 5,遇到continue;则结束本轮循环,continue下面的语句不再执行。
步长累加:i++; i = 5 + 1 = 6;
验证条件 i > 5 ;不满足条件,结束整个循环。
*/
}
使用循环遍历数组,for in 循环
/*遍历(循环/迭代)数组中的每一项*/
var arr = [10,20,30,40,50];
for(let i = 0; i < arr.length; i++){
console.log(arr[i]);
/*
解析:设置初始值 i = 0;
条件:i < arr.length = 5,执行循环体:console.log(arr[i]);arr[i] => arr[0] => 从数组arr中获取索引为0的内容:10
步长累加:i++; i = 0 + 1 = 1;
条件:i < arr.length = 5,执行循环体:console.log(arr[i]);arr[i] => arr[1] => 从数组arr中获取索引为1的内容:20
步长累加:i++; i = 1 + 1 = 2;
条件:i < arr.length = 5,执行循环体:console.log(arr[i]);arr[i] => arr[2] => 从数组arr中获取索引为2的内容:30
步长累加:i++; i = 2 + 1 = 3;
条件:i < arr.length = 5,执行循环体:console.log(arr[i]);arr[i] => arr[3] => 从数组arr中获取索引为3的内容:40
步长累加:i++; i = 3 + 1 = 4;
条件:i < arr.length = 5,执行循环体:console.log(arr[i]);arr[i] => arr[4] => 从数组arr中获取索引为4的内容:50
步长累加:i++; i = 4 + 1 = 5;
条件:i = arr.length = 5,不满足条件,不再执行循环体,结束本次循环
*/
}
/*遍历对象中的每一个属性:无法直接获取到对象中有多少个属性(ES6中的Object.keys除外),也就无法知道循环多少次,所以无法使用for循环;真是项目中遍历对象基于for in 循环*/
var obj = {
name:'xiaoli',
age:18,
desc:"努力学习前端ing"
};
for( let key in obj){
console.log(`本轮循环:属性名:${key},属性值:${obj[key]}`);
/*
创建变量key(存储的是属性) in 对象
当前对象中有多少个可枚举的属性,就循环多少次
key变量存储的是每一次循环的属性名
obj[key]获取key变量对象属性名的属性值
输出结果:
本轮循环:属性名:name,属性值:xiaoli
本轮循环:属性名:age,属性值:18
本轮循环:属性名:desc,属性值:努力学习前端ing
*/
}
网友评论