循環(huán)操作語句
循環(huán): 重復(fù)做一件事情
for循環(huán)
// for(設(shè)置循環(huán)起始值;設(shè)置循環(huán)執(zhí)行的條件;步長累加){
// 循環(huán)體: 重復(fù)做的事情都在循環(huán)體中
// }
for(var i=0;i<5;i++){
console.log(i) // 0 1 2 3 4
}
console.log(i) // 5
var i=0
for(;i<5;){ // 初始值可以在循環(huán)外聲明,但不能省略分號,
console.log(i) // 省略步長會陷入死循環(huán),導(dǎo)致瀏覽器崩潰
i++; // 步長累加可以放在循環(huán)體中
}
console.log(i)
for(var i = 0;i < 5;i++){
console.log(i);
continue;
// 結(jié)束本輪循環(huán),繼續(xù)執(zhí)行下一輪: 循環(huán)體中continue后面的代碼都不會再執(zhí)行,它會直接的去執(zhí)行步長,然后進入到下一輪
// ...
}
console.log(i); // -> 5
for(var i = 0;i < 5;i++){
console.log(i);
break;
// 結(jié)束整個循環(huán): 循環(huán)體中一旦遇到break,首先后面代碼不執(zhí)行了,而且步長累加也不執(zhí)行了,循環(huán)都結(jié)束了
// ...
}
console.log(i); // -> 0
面試題
for(var i=1;i<10;i+=2){
if(i<5){
i++;
continue;
}else{
i+=3;
break;
}
console.log(i)
}
console.log(i) // -> 10
for - in循環(huán)
用來遍歷(循環(huán))對象鍵值對的
對象中有多少組鍵值對,我們的for in循環(huán)就遍歷多少次(不一定)
每一次循環(huán)key這個變量存儲的都是當(dāng)前循環(huán)這組鍵值對的屬性名
- key存儲的值都是字符串格式的(不管屬性名是不是數(shù)字)
- 在for in循環(huán)遍歷的時候,大部分瀏覽器都是先把對象中的鍵值對進行排序(把數(shù)字屬性名的排在前面,并且排列的時候按照數(shù)字有小到大排列
[小數(shù)不算]
),其次再把非數(shù)字的屬性名按照之前編寫的順序排列,循環(huán)的時候按照重新排列的順序依次遍歷
var obj = {name:"lilei",age:18,1:"abc",3:"ABC",2:"xyz"}
// -> 對象中有多少組鍵值對,我們的for in循環(huán)就遍歷多少次(不一定)
// -> 每一次循環(huán)key這個變量存儲的都是當(dāng)前循環(huán)這組鍵值對的屬性名
for(var key in obj){
console.log(key) // -"string" 1,2,3,name,age
console.log(obj.key) // undefined
console.log(obj[key]) //每一次循環(huán)把key存儲的值(當(dāng)前遍歷的屬性名)獲取到放在中括號中,獲取obj中對應(yīng)的屬性的屬性值
}
// 'key': 字符串key,屬性名
// key: 變量key,代表的是存儲的值
// obj['key'] obj.key: 屬性名是key
// obj[key]: 屬性名不是key而是key變量存儲的值