JS中的循環有不少,今天咱們簡單說一下for
循環及它和for in
循環的區別;javascript
for(設置初始值;設置循環執行的條件,控制循環次數;每一輪循環結束後處理的事情[步長累加]){
//=>循環體(每一輪循環要作的事情)
}
複製代碼
-1).java
for (var i = 0; i < 5; i++) {
console.log(`本輪循環i的值是:${i}`);
}
console.log(`循環結束後,此時的i已經變爲:${i}`);
/* * 初始值:i=0 * 0<5 成立的 * 0<3成立 i++ i=1 =>1 * i+=2 i=3 * 3<5 成立的 * 3<3 不成立 =>3 * i+=2 i=5 * 5<5 不成立 循環結束 */
複製代碼
for (var i = 0; i < 5; i += 2) {
if (i < 3) {
i++;
}
console.log(`本輪循環i的值是:${i}`);//=> 1 , 3
}
console.log(`循環結束後,此時的i已經變爲:${i}`);//=> 5
複製代碼
var n = 10;
for (; n > 0;) {
if (n > 5) {
n -= 2;
} else {
n -= 3;
}
}
console.log(`循環結束後,此時的i已經變爲:${n}`); //=>-2
複製代碼
break
和continue
for (var i = 0; i < 5; i++) {
if (i > 3) {
// i=4 的時候,遇到了break,此時循環結束
break;
}
console.log(`本輪循環i的值是:${i}`); //=> 0 1 2 3
}
console.log(`循環結束後,此時的i已經變爲:${i}`); //=>4
複製代碼
for (var i = 0; i < 5; i++) {
if (i > 2) {
i += 1;
//=>i=3 i++ =>i=4 遇到continue:本輪循環結束(下面輸出不執行,可是i++會執行)
continue;
}
console.log(`本輪循環i的值是:${i}`); //=>0 1 2
}
console.log(`循環結束後,此時的i已經變爲:${i}`); //=>5
複製代碼
for (var i = 0; i < 10; i++) {
if (i >= 2) {
i += 2;
continue;
}
if (i >= 6) {
i--;
break;
}
i++;
console.log(i); //=>1
}
console.log(i); //=>11
複製代碼
for 循環
與for in
循環的區別及應用for 循環
應用length
屬性,因此咱們可以知道循環次數,也能基於索引獲取對應項,使用FOR循環
就能夠解決var arr = [10, 20, 30, 40, 50];
for (var i = 0; i < arr.length; i++) {
// arr.length = 5
// 第一輪循環 i=0
arr[0]
// 第二輪循環 i=1
arr[1]
// ....
// 第五輪循環 i=4
arr[4]
每一輪循環i變量存儲的值就是咱們當前這一輪想獲取數組中當前項的索引
console.log(arr[i]);
}
複製代碼
for in
循環遍歷對象中的每個屬性:咱們沒法直接獲取到對象中有多少個屬性(ES6
中的Object.keys
除外),也就沒法知道循環多少次,因此沒法使用FOR
循環;真實項目中遍歷對象咱們基於FOR IN
循環;數組
語法:bash
key
變量存儲的是每一次循環的屬性名
obj[key]
獲取key
變量對象屬性名的屬性值var obj = {
name: '小明',
age: 18,
address: '北京市'
};
for (var key in obj) {
console.log(`本輪循環,屬性名:${key},屬性值:${obj[key]}`);
}
複製代碼
注意:ui
FOR IN
遍歷的時候,是優先按照從小到大
的機制遍歷數字
屬性的var obj = {
name: '小明',
age: 10,
10: 100,
0: 10
};
for (var key in obj) {
// 0 10 name age
console.log(`本輪循環,屬性名:${key},屬性值:${obj[key]}`);
}
複製代碼