一、`for`循環(huán)
`for`循環(huán)是最常用的循環(huán)結(jié)構(gòu)之一,它允許你指定循環(huán)的起始值、結(jié)束值和迭代步長(zhǎng)。其基本語(yǔ)法如下:
```javascript
for (初始化表達(dá)式; 條件表達(dá)式; 迭代表達(dá)式) {
// 循環(huán)體
}
```
- 初始化表達(dá)式:在循環(huán)開始前執(zhí)行一次,通常用于初始化循環(huán)變量。
- 條件表達(dá)式:每次循環(huán)開始前都會(huì)被求值,如果為真,則繼續(xù)循環(huán);如果為假,則結(jié)束循環(huán)。
- 迭代表達(dá)式:在每次循環(huán)結(jié)束后執(zhí)行,用于更新循環(huán)變量。
例如,以下代碼使用`for`循環(huán)打印從 1 到 10 的數(shù)字:
```javascript
for (let i = 1; i <= 10; i++) {
console.log(i);
}
```
二、`while`循環(huán)
`while`循環(huán)在條件為真時(shí)重復(fù)執(zhí)行一段代碼,直到條件變?yōu)榧佟F湔Z(yǔ)法如下:
```javascript
while (條件表達(dá)式) {
// 循環(huán)體
}
```
只要條件表達(dá)式為真,循環(huán)就會(huì)一直執(zhí)行。在循環(huán)體中,通常需要包含更新條件的代碼,以避免無限循環(huán)。
例如,以下代碼使用`while`循環(huán)計(jì)算 1 到 10 的總和:
```javascript
let sum = 0;
let i = 1;
while (i <= 10) {
sum += i;
i++;
}
console.log(sum);
```
三、`do...while`循環(huán)
`do...while`循環(huán)與`while`循環(huán)類似,不同之處在于它先執(zhí)行一次循環(huán)體,然后再檢查條件表達(dá)式。如果條件為真,則繼續(xù)循環(huán);如果條件為假,則結(jié)束循環(huán)。其語(yǔ)法如下:
```javascript
do {
// 循環(huán)體
} while (條件表達(dá)式);
```
這種循環(huán)結(jié)構(gòu)確保循環(huán)體至少會(huì)執(zhí)行一次,即使條件在第一次檢查時(shí)就為假。
例如,以下代碼使用`do...while`循環(huán)獲取用戶輸入,直到輸入有效的整數(shù):
```javascript
let input;
do {
input = prompt("請(qǐng)輸入一個(gè)整數(shù):");
} while (isNaN(input) || parseInt(input) < 0);
console.log("你輸入的整數(shù)是:" + input);
```
四、`for...of`循環(huán)
`for...of`循環(huán)用于遍歷可迭代對(duì)象(如數(shù)組、字符串、`Set`、`Map`等)的元素。它簡(jiǎn)化了遍歷數(shù)組或其他可迭代對(duì)象的過程。其語(yǔ)法如下:
```javascript
for (變量 of 可迭代對(duì)象) {
// 循環(huán)體
}
```
在每次循環(huán)中,`變量`將被賦值為可迭代對(duì)象的當(dāng)前元素。
例如,以下代碼使用`for...of`循環(huán)遍歷數(shù)組并打印每個(gè)元素:
```javascript
const array = [1, 2, 3, 4, 5];
for (let element of array) {
console.log(element);
}
```
五、`for...in`循環(huán)
`for...in`循環(huán)用于遍歷對(duì)象的可枚舉屬性。它遍歷對(duì)象的鍵,并在每次循環(huán)中將鍵賦值給一個(gè)變量。其語(yǔ)法如下:
```javascript
for (變量 in 對(duì)象) {
// 循環(huán)體
}
```
需要注意的是,`for...in`循環(huán)不僅遍歷對(duì)象自身的屬性,還會(huì)遍歷原型鏈上的屬性。如果只需要遍歷對(duì)象自身的屬性,可以使用`Object.keys()`方法獲取對(duì)象的鍵數(shù)組,然后再進(jìn)行遍歷。
例如,以下代碼使用`for...in`循環(huán)遍歷對(duì)象的屬性并打印屬性名和屬性值:
```javascript
const obj = { name: "John", age: 30, city: "New York" };
for (let key in obj) {
console.log(key + ": " + obj[key]);
}
```
JavaScript 提供了多種循環(huán)語(yǔ)句,每種循環(huán)都有其適用的場(chǎng)景。根據(jù)具體的需求選擇合適的循環(huán)語(yǔ)句可以使代碼更加簡(jiǎn)潔、高效。在實(shí)際開發(fā)中,經(jīng)常會(huì)使用`for`循環(huán)和`for...of`循環(huán)來遍歷數(shù)組和執(zhí)行固定次數(shù)的循環(huán),使用`while`循環(huán)和`do...while`循環(huán)來處理?xiàng)l件控制的循環(huán)。熟練掌握這些循環(huán)語(yǔ)句將有助于編寫更加靈活和高效的 JavaScript 代碼。