for ([1]initialization; [2]condition; [4]post loop expression)
[3]statement
//執行順序為[1][2][3][4]-[2][3][4]-[2][3][4]-...
最佳化for迴圈
for (var i = 0; i < a.length; i++) {a[i]},這樣不是很有效率,因為每迴圈一次就會查詢一次 length 屬性。(但所有JavaScript的教科書都這樣教!)
比較好的寫法:for (var i = 0, len = a.length; i < len; i++) {a[i]},初始化時宣告兩個變數,把length屬性值存放到變數中。
更棒的寫法:for (var i = 0, item; item = a[i]; i++) {處理item},for 迴圈中間指定變數值的部分會被測試是否為「真的」(truthy):如果成功了,迴圈便會繼續。
由於 i 每次都會加一,陣列內的每個項目會被照順序指定到變數 item。當偵測到「假的」(falsy) 項目時(如 undefined)迴圈便會停止。
注意:這個小技巧只該用在你確定不會含有「假的」值的陣列(比如說一陣列的物件或 DOM 節點)。
假如你在可能含有 0 的數字資料或可能含有空字串的字串資料上做迴圈,最好還是用 i, j 的方式。
while
while迴圈本身沒有更新條件程式,必須自建條件更新程式(update)
while (condition)
statement
組成
檢測條件(test condition)
行動(action)
do
statement
while (condition)
先執行一次完整程式碼,再進行檢測條件
for...in
通常用來列舉物件的屬性
for (property in expression)
statement
for/while
while迴圈能做到任何for迴圈的任務,反之亦然
for (init; test; update){
action;
}
init;
while (test) {
action;
update;
}
with
fon...in主要顯示物件的所有屬性,with敘述能夠針對物件建立一個程式區塊
with (ObjectName){
...
}
var Card = new Object();
with (Card){
//"新增"property
name = "Bruce";
age = 33;
birthday = new Date("2010/3/23");
document.write("姓名:"+name+",年齡:"+age+",生日:"+birthday);
}