ECMASCript定義了一組語句,也稱流程控制語句
條件語句express
=============瀏覽器
if (condition) statement1 else statement2
其中的condition條件能夠是任意表達式,並且對這個表達式的求值結果不必定是布爾值。ECMAScript會自動調用Boolean()轉換函數將這個表達式的結果轉換爲一個布爾值。若是對condition求值的結果爲true,則執行statement1,若是對condition求值結果爲false,則執行statement2。這兩個語句既能夠是一行代碼,也能夠是一個代碼塊(推薦)。函數
if (condition1) statement1 else if(condition2) statement2 else statement3
switch(expression) { case value: statement break; case value: statement break; case value: statement break; default: statement }
switch語句中每個case的含義是:"若是表達式
等於這個值value
,則執行後面的語句statement"。而break會致使代碼執行跳出switch語句。若是省略break關鍵字,就會致使執行完當前case後,繼續執行下一個case。最後的default關鍵字則用於在表達式不匹配前面任何一種情形時,執行機動代碼(所以,也至關於一個else語句)。測試
例子1code
var num = 25; switch (true) { case num < 0: alert("Less than 0"); break; case num >= 0 && num <= 10: alert("Between 0 and 10"); break; case num > 10 && num <= 20: alert("Between 10 and 20"); break; default: alert("More than 20"); }
注意
:switch語句在比較值時使用的是全等操做符,所以不會發生類型轉換。對象
在對錶達式求值以前,循環體內的代碼至少被執行一次。ip
do { statement } while (expression);
例子2it
var i = 0; do { i += 2; } while (i < 10); alert(i);//10
while(expression) statement
例子3io
var i = 0; while(i < 10) { i += 2; } alert(i);//10
它具備在執行循環以前初始化變量和定義循環後要執行代碼的能力。
例子4console
for(var i = 0;i < 10;i++) { alert(i); }
for-in 語句是一種精準的迭代語句,能夠用來枚舉對象的屬性
for (var prop in window) { console.log(prop); }
ECMAScript對象的屬性沒有順序。所以經過for-in循環輸出的屬性名是不可預測的,具體來說,全部屬性都會被返回一次,單反毀的前後次序可能會因瀏覽器而異。建議在使用以前,先檢測確認該對象的值不是null或unedfined。
當即退出循環
例子5
var num = 0; for(var i = 1;i < 10;i++) { if(i % 5 == 0) { break; } num++; } alert(num);//4
退出當前正在執行的循環代碼,而後開始繼續循環。
var num = 0; for(var i = 1;i < 10;i++) { if(i % 5 == 0) { continue; } num++; } alert(num);//8
//執行過程理解 var num = 0; for(var i = 1;i < 10;i++) { console.log('i '+i); if(i % 5 == 0) { continue; } num++; console.log('num '+num); };
可指定返回值,也可不指定(此時返回undefined)。1.return語句後中止並當即退出函數,return後面的語句也永遠不會執行2.return語句只能在函數體內出現,若是不是的話會自動報語法錯誤