標籤:sci value false 瞭解 continue val 布爾 alert 自動
文法:通常使用一或多個關鍵字來完成給定任務。
if語句:
條件可以是任意運算式;而且對這個運算式求值的結果不一定是布爾值。ECMAScript會自動調用Boolean()轉換函式將這個運算式的結果轉換為一個布爾值。如果求值結果為true,則執行語句1,如果求值結果是false,則執行語句2。這兩個語句既可以是一行代碼,也可以是一個代碼塊(一對花括弧括起來的多行代碼)
if(i > 25){ alert("Great than 25."); //單行語句} else{ alert("Less than or equal to 25."); //代碼塊中的語句}
即使只有一行代碼,也要始終使用代碼塊。
do-while語句:
後測試迴圈語句:對錶達式求值之前,迴圈體內的代碼至少會被執行一次。
var i = 0;do{ i += 2;}while(i < 10);alert(i);
while語句:
前測試迴圈語句:迴圈體內的代碼有可能永遠不會被執行。
var i = 0;while(i < 10){ i += 2; }alert(i);
for語句:
前測試迴圈語句:但是它具有執行迴圈之前初始設定變數和定義迴圈後要執行的代碼的能力。也有可能不會執行迴圈體中的代碼。
var count = 10;//var i;for(var i = 0; i < count; i++)//迴圈變數初始化語句; 迴圈條件; 改變迴圈變數的語句{ alert(i);//迴圈體} alert(i) //10
迴圈變數初始化語句是可以省略的;也可以初始化多個值; 初始化迴圈中所用的變數
迴圈條件是可以省略的;但是必須在迴圈內提供break; 評估初始變數的條件
改變迴圈變數的語句是可以省略的,增量可以是負數或者更大 增加初始變數的值。
如果全都省略,就會建立一個無限迴圈。
使用while迴圈做不到的,使用for迴圈同樣也做不到。
for迴圈的變數初始化語句,可以不使用var關鍵字,在外部執行。
即使 i 是在迴圈內部定義的一個變數,但是在迴圈外部任然可以訪問到它。
for-in語句:
一種精準的迭代語句,可以用來枚舉對象的屬性。
for (var propName in window){ document.write(propName);}
這個例子中,使用for-in迴圈來顯示了BOM中的window對象的所有屬性。每次執行迴圈時,都會將window對象中存在的一個屬性名稱賦值給變數propName。這個過程會一直持續到對象中的所有屬性都被枚舉一遍為止。
ECMAScript對象的屬性沒有順序,通過for-in迴圈輸出的屬性名稱的順序是不可預測的。具體來講,所有屬性都會被返回一次,但是返回的先後次序可能回因瀏覽器而異。
如果迭代的對象的變數值為null或undefined,for-in語句會拋出錯誤。不再執行迴圈體。
label語句:
可以在代碼中添加標籤,以便將來使用。
start:for(var i = 0; i < count; i++){ alert(i);}
這個例子定義的start標籤可以在將來由break或continue語句應用。加標籤的語句一般都要與for語句等迴圈語句配合使用。
break和coutinue語句:用於迴圈中精確地控制碼的執行。
break語句會立即退出迴圈,執行迴圈後面的語句;
continue語句也是立即退出迴圈,但退出迴圈後會從迴圈的頂部繼續執行;
var num = 0; var num = 0; for(var i=1; i<10; i++) for(var i=1; i<10; i++) { { if(i % 5 == 0) if(i % 5 == 0) { { break; continue; } } num++; num++;} }alert(num); /*4*/ alert(num); //8
break和continue語句都可以與label語句聯合使用,從而傳回碼中特定的位置。這種聯合使用的情況多發生在迴圈嵌套的情況下。
var num = 0; var num = 0; outermost: outermost:for(var i=0; i<10; i++) for(var i=0; i<10; i++){ { for(var j=0; j<10; j++) for(var j=0; j<10; j++) { { if( i==5 && j ==5) if( i==5 && j ==5) { { break outermost; continue outermost; } } num++ num++ } }} }alert(num);/*55*/ alert(num);//95
建議如果使用label語句,一定要使用描述性的標籤,同時不要嵌套過多的迴圈。
with語句:看書瞭解,不建議使用不詳述。
switch語句:
swith語句與if語句的關係最為密切,而且也是在其他語言中普遍使用的一種流量控制語句。
switch (expression) case value: statement; break; case value: statement; break; case value: statement; break; case value: statement; break;... case value: statement; break; default: statement;
每個情況(case)都是表示“如果 expression 等於 value,就執行 statement”。
關鍵字 break 會使代碼跳出 switch 語句。如果沒有關鍵字 break,代碼執行就會繼續進入下一個 case。
關鍵字 default 說明了運算式的結果不等於任何一種情況時的操作(事實上,它相對於 else 語句)。
可以在switch語句中使用任何資料類型,字串和對象都可以。每個case的值都不一定是常量,可以是變數。甚至是運算式。
switch語句在比較值時使用的是全等操作符,因此不會發生類型轉換。(字串 "10" 不等於數值10)。
函數:
通過函數可以封裝任意多條語句,而且可以在任何地方任何時候調用執行。ECMAScript中的函數使用function關鍵字來聲明,後跟一組參數以及函數體。
函數可以通過其函數名來調用,後面還要加上一對圓括弧和參數(圓括弧中的參數如果有多個,可用逗號隔開)。
任何函數在任何時候都可以通過return語句後跟要返回的值來實現傳回值。函數執行完return語句之後停止並立即退出。
未指定傳回值的函數返回的是一個特殊的undefined值。
要麼函數始終都返回一個值,要麼永遠都不要傳回值。不然函數有時候傳回值,有時候又不傳回值,會給調試代碼帶來不便。
參數:
ECMAScipt不介意傳遞進來多少參數,也不在乎參數是什麼資料類型。並且可以通過arguments對象來訪問這些參數。
沒有傳遞值的具名引數將自動被賦予undefined值。
ECMAScript中的所有參數傳遞的都是值,不可能通過引用傳遞參數。
沒有重載:由於不存在函數簽名的特性,ECMAScript函數不能重載。
JavaScript進階程式設計(3)基本概念