鐵人賽
如果要重複做一件事情,就要用到迴圈這個語法。
還記得當初剛接觸到 0.1+0.2 不等於 0.3 時覺得疑惑,用 console.log 把 0.1*1、0.1*2、...、0.1*10 都印出來看結果,於是寫了下面這段,
後來讀到 JavaScript 迴圈才知道該如何改寫。
我用 while 來理解迴圈的執行流程
假設題目是:要各別印出數字 1~10,
那我第一步可以先 var 一個 a 變數等於 1,第二,要印到 10 所以條件設 <=10,然後結束時 a++(a = a + 1),再回到執行條件重複執行,直到執行條件不 <10 停止。
var a = 1; // 這是初始值
while ( a <= 10 ) { // 這是執行條件
console.log(a); // 印出結果
a++; // 結束時變動
}
while 照順序排下來,印出想要的結果
然後再把剛剛的題目改成 for 迴圈的寫法,for 迴圈一定要有三個條件,不寫可以留空,但一定要加分號,不然會報錯。
for (var a = 1; a <= 10; a++) {
console.log(a);
}
// 在外面宣告括號裡要留分號,但一般來說不會有人這樣寫
var a = 1;
for (;a <= 10; a++) {
console.log(a);
}
看完這兩個寫法可以來改寫我原本的測試啦~
題目:印出 0.1*1、0.1*2、...、0.1*10 的結果
分別用 while、for 寫法
// while 迴圈寫法
var a = 1;
while (a<=10) {
console.log(a*.1)
a++;
}
// for 迴圈寫法
for (var a = 1; a<=10; a++) {
console.log(a*.1);
}
// 結果相同
0.1
0.2
0.30000000000000004
0.4
0.5
0.6000000000000001
0.7000000000000001
0.8
0.9
1
明確知道迴圈執行次數使用 for,不確定時使用 while。
for 包含初始值、條件、執行後的改變,可以清楚的知道執行次數,而 while 只包含條件。
假設今天要取 1~10 的偶數,那我們就可以利用 continue 的特性,來避開基數,練習如下:
for (var a = 1; a<=10; a++) {
if ( a % 2 !== 0) {
continue;
}
console.log(a);
}
而 break 目前只測試到停止,還在找適當的範例,晚點再更新補上。
在寫迴圈的時候,最怕遇到跳不出迴圈的狀況,無限迴圈一直跑下去造成當機,所以條件設定的邏輯很重要,若不幸遇到停不下來的狀況,在瀏覽器的 devtool 下可以按重新整理,如果是 node 環境可以按 control+C 來停止。