天天看點

JavaScript控制語句之循環語句

目錄

1.while 循環

2.for 循環

3.do...while循環

4.break語句與continue語句

5.for循環與while循環的差別

6.while循環和do...while循環的差別

循環語句用于重複執行某個操作,它有多種形式。

1.while 循環

While語句包括一個循環條件和一段代碼塊,隻要條件為真,就不斷循環執行代碼塊。

while (條件)
    語句;
// 或者
while (條件) 語句;
           

while語句的循環條件是一個表達式,必須放在圓括号中。代碼塊部分,如果隻有一條語句,可以省略大括号,否則就必須加上大括号。

while (條件) {
  語句;
}
           

下面是while語句的一個例子。

var i = 0;
while (i < 100) {
  console.log('i 目前為:' + i);
  i = i + 1;
}
           

上面的代碼将循環100次,直到i等于100為止。下面的例子是一個無限循環,因為循環條件總是為真。

hile (true) {
  console.log('Hello, world');
}
           

2.for 循環

for語句是循環指令的另一種形式,可以指定循環的起點、終點和終止條件。它的格式如下。

for (初始化表達式; 條件; 遞增表達式)
  循環體
// 或者
for (初始化表達式; 條件; 遞增表達式) {
  循環體
}
           

for語句後面的括号裡面,有三個表達式。

  • 初始化表達式(initialize):确定循環變量的初始值,隻在循環開始時執行一次。
  • 條件表達式(test):每輪循環開始時,都要執行這個條件表達式,隻有值為真,才繼續進行循環。
  • 遞增表達式(increment):每輪循環的最後一個操作,通常用來遞增循環變量。

下面是一個例子。

var x = 3;
for (var i = 0; i < x; i++) {
  console.log(i);
}// 0// 1// 2
           

上面代碼中,初始化表達式是var i = 0,即初始化一個變量i;測試表達式是i < x,即隻要i小于x,就會執行循環;遞增表達式是i++,即每次循環結束後,i增大1。所有for循環,都可以改寫成while循環。上面的例子改為while循環,代碼如下。

var x = 3;
var i = 0;
while (i < x) {
  console.log(i);
  i++;
}
           

for語句的三個部分(initialize、test、increment),可以省略任何一個,也可以全部省略。

for ( ; ; ){
  console.log('Hello World');
}
           

上面代碼省略了for語句表達式的三個部分,結果就導緻了一個無限循環。

3.do...while循環

        do...while循環與while循環類似,唯一的差別就是先運作一次循環體,然後判斷循環條件。

do
  語句while (條件);
// 或者
do {
  語句
} while (條件);
           

不管條件是否為真,do...while循環至少運作一次,這是這種結構最大的特點。另外,while語句後面的分号注意不要省略。下面是一個例子。

var x = 3;
var i = 0;
do {
    i++;
    console.log(i);
} while(i < x);

/*輸出結果為
    1
    2
    3
*/
           

4.break語句與continue語句

        break語句和continue語句都具有跳轉作用,可以讓代碼不按既有的順序執行。break語句用于跳出代碼塊或循環。如下:

var i = 0;
while(i < 100) {
  console.log('i 目前為:' + i);
  i++;
  if (i === 10) break;
}
           

上面代碼隻會執行10次循環,一旦i等于10,就會跳出循環。continue語句用于立即終止本輪循環,傳回循環結構的頭部,開始下一輪循環。如下:

var i = 0;
while (i < 100){
  i++;
  if (i % 2 === 0) continue;
  console.log('i 目前為:' + i);
}
           

上面代碼隻有在i為奇數時,才會輸出i的值。如果i為偶數,則直接進入下一輪循環。如果存在多重循環,不帶參數的break語句和continue語句都隻針對最内層循環。

        總結:break語句用于跳出目前循環;continue語句則 是結束本次循環,進入下一次循環。

5.for循環與while循環的差別

  • for循環适用于已知循環次數,而while循環适用于未知循環次數
  • 局部變量在棧記憶體中存在,當for語句結束時,變量會及時被gc(垃圾回收器)及時釋放掉,不浪費空間;如果使用循環後還想去通路循環語句中控制那個變量,用while循環語句

6.while循環和do...while循環的差別

  • while語句是先判斷條件再決定是否執行代碼
  • do...while語句是先執行代碼再判斷條件