迴圈的目的是重複執行某個動作,例如按下開始鈕開始報數 1、2、3、…,直到完成目的才停止。
JS 提供了許多簡便的方法來完成這些重複的事。
for
會一直重複執行,直到條件被滿足。
可指定迴圈的執行次數。
// 語法
for ([initialExpression]; [condition]; [incrementExpression]) {
statement;
}
{ }
來個練習吧!
// 問題 from GPT
// 創建一個陣列,包含一些數字。使用 for 迴圈計算這些數字的總和,然後將結果顯示在控制台上。
let arr = [1, 5, 10, 20, 35];
let res = 0;
for (let i = 0; i < arr.length; i++) {
res = res + arr[i];
}
console.log(res); // 71
for...in
// 語法
for (key in obj) {
statement
}
來個練習吧!
// 問題 from GPT
// 問題:請使用 for...in 迴圈遍歷以下物件 tag 的所有屬性,並將它們輸出到控制台。
const obj = {
a: "A",
b: "B",
c: "C"
};
for (let key in obj) {
console.log(`${key}:${obj[key]}`);
}
/*
a:A
b:B
c:C
*/
for...of
for (variable of iterable) {
//statements
}
與 for...in
的差別?
for...in
拿到的是無序迭代物件的 key;若是陣列,key 指的是 index。for...of
拿到的是迭代物件的 value。// 例子 from MDN
let arr = [3, 5, 7];
arr.foo = "hello";
for (let i in arr) {
console.log(i); // logs "0", "1", "2", "foo"
}
for (let i of arr) {
console.log(i); // logs 3, 5, 7
}
來個練習吧!
// 問題 from GPT
// 問題:請使用 for...of 迴圈遍歷以下字串 text 中的字元,並將它們輸出到控制台。
const text = "Hello!";
for (let word of text) {
console.log(word);
}
/*
H
e
l
l
o
!
*/
break
來點例子吧!
// 範例來自 MDN
let i = 0;
while (i < 6) {
if (i === 3) {
break; // i=3 時,強制終止並跳出迴圈
}
i = i + 1;
}
console.log(i); // 3
continue
來點例子吧!
// 範例來自 MDN, 略加修改
var i = 0;
var n = 0;
while (i < 5) {
console.log("迴圈開始");
i++;
console.log("i", i);
if (i == 3) {
continue;
}
n += i;
console.log("n", n);
}
/*
迴圈開始
i 1
n 1
迴圈開始
i 2
n 3
迴圈開始
i 3
迴圈開始
i 4
n 7
迴圈開始
i 5
n 12
*/
while
只要 condition 為 true,就會一直執行 statement。
無法指定迴圈次數,小心無限迴圈。
while (condition)
statement
{ }
將句子們包起來。來個練習吧!
// 問題 from GPT
// 問題:使用 while 迴圈計算 1 到 100 之間的所有偶數的總和。
let sum = 0;
let num = 2;
while (num <= 100) {
sum = sum + num;
num = num + 2;
}
console.log(`總和為 ${sum}`); // 2550
do...while
會反覆執行直到條件為 false 為止。
小心無限迴圈。
// 語法
do {
statement
}
while (condition);
{ }
包起即可。來個練習吧!
// code from MDN
var i = 0;
do {
i += 1;
console.log(i);
} while (i < 5);
參考資料