不同類型的循環
JavaScript 支持不同類型的循環:
- for - 循環代碼塊一定的次數
- for/in - 循環遍歷對象的屬性
- while - 當指定的條件爲 true 時循環指定的代碼塊
- do/while - 同樣當指定的條件爲 true 時循環指定的代碼塊
For 循環
for 循環是您在希望創建循環時常會用到的工具。
下面是 for 循環的語法:
for (語句 1; 語句 2; 語句 3)
{
被執行的代碼塊
}
語句 1 (代碼塊)開始前執行 starts.
語句 2 定義運行循環(代碼塊)的條件
語句 3 在循環(代碼塊)已被執行之後執行
語句 1
通常我們會使用語句 1 初始化循環中所用的變量 (var i=0)。
語句 1 是可選的,也就是說不使用語句 1 也可以。
您可以在語句 1 中初始化任意(或者多個)值:
for (var i=0,len=cars.length; i<len; i++)
{
document.write(cars[i] + "<br>");
}
同時您還可以省略語句 1(比如在循環開始前已經設置了值時):
var i=2,len=cars.length;
for (; i<len; i++)
{
document.write(cars[i] + "<br>");
}
語句 2
通常語句 2 用於評估初始變量的條件。
語句 2 同樣是可選的。
如果語句 2 返回 true,則循環再次開始,如果返回 false,則循環將結束。
如果您省略了語句 2,那麼必須在循環內提供 break。否則循環就無法停下來。這樣有可能令瀏覽器崩潰。請在本教程稍後的章節閱讀有關 break 的內容。
語句 3
通常語句 3 會增加初始變量的值。
語句 3 也是可選的。
語句 3 有多種用法。增量可以是負數 (i–),或者更大 (i=i+15)。
語句 3 也可以省略(比如當循環內部有相應的代碼時):
var i=0,len=cars.length;
for (; i<len; )
{
document.write(cars[i] + "<br>");
i++;
}
For/In 循環
JavaScript for/in 語句循環遍歷對象的屬性:
var person={fname:"John",lname:"Doe",age:25};
for (x in person)
{
txt=txt + person[x];
}
while 循環
while 循環會在指定條件爲真時循環執行代碼塊。
語法
while (條件)
{
需要執行的代碼
}
如果您忘記增加條件中所用變量的值,該循環永遠不會結束。這可能導致瀏覽器崩潰。
do/while 循環
do/while 循環是 while 循環的變體。該循環會在檢查條件是否爲真之前執行一次代碼塊,然後如果條件爲真的話,就會重複這個循環。
語法
do
{
需要執行的代碼
}
while (條件);
比較 for 和 while
本例中的循環使用 for 循環來顯示 cars 數組中的所有值:
cars=["BMW","Volvo","Saab","Ford"];
var i=0;
for (;cars[i];)
{
document.write(cars[i] + "<br>");
i++;
}
本例中的循環使用 while 循環來顯示 cars 數組中的所有值:
cars=["BMW","Volvo","Saab","Ford"];
var i=0;
while (cars[i])
{
document.write(cars[i] + "<br>");
i++;
}
Break 語句
我們已經在本教程之前的章節中見到過 break 語句。它用於跳出 switch() 語句。
break 語句可用於跳出循環。
break 語句跳出循環後,會繼續執行該循環之後的代碼(如果有的話):
for (i=0;i<10;i++)
{
if (i==3)
{
break;
}
x=x + "The number is " + i + "<br>";
}
由於這個 if 語句只有一行代碼,所以可以省略花括號:
for (i=0;i<10;i++)
{
if (i==3) break;
x=x + "The number is " + i + "<br>";
}
Continue 語句
continue 語句中斷循環中的迭代,如果出現了指定的條件,然後繼續循環中的下一個迭代。 該例子跳過了值 3:
for (i=0;i<=10;i++)
{
if (i==3) continue;
x=x + "The number is " + i + "<br>";
}
JavaScript 標籤
正如您在 switch 語句那一章中看到的,可以對 JavaScript 語句進行標記。
如需標記 JavaScript 語句,請在語句之前加上冒號:
label:
statements
break 和 continue 語句僅僅是能夠跳出代碼塊的語句。
語法:
break labelname;
continue labelname;
continue 語句(帶有或不帶標籤引用)只能用在循環中。
break 語句(不帶標籤引用),只能用在循環或 switch 中。
通過標籤引用,break 語句可用於跳出任何 JavaScript 代碼塊:
cars=["BMW","Volvo","Saab","Ford"];
list:
{
document.write(cars[0] + "<br>");
document.write(cars[1] + "<br>");
document.write(cars[2] + "<br>");
break list;
document.write(cars[3] + "<br>");
document.write(cars[4] + "<br>");
document.write(cars[5] + "<br>");
}