if語句
if(true){
alert("Greater than 25;");}
else{
alert("less than or equal to 25;");}
循環語句
do-while循環
do{
alert(i);
}while(i<10);
while循環
while(i<10)
{alert(i);}
for循環
for(var i=0;i<10;i++)
{
i+=2;
}
for-in語句
for-in語句是一種精確的迭代語句,可以用來枚舉對象的屬性。
for(var propName in window)
{
document.write(propName);
}
ECMAScript對象的屬性沒有順序,所以通過for-in循環輸出的屬性順序是不可以預測的。具體來說,所有的屬性都會被返回一次,但返回的次序因瀏覽器而異。如果要迭代的對象是null和undefined,會不執行循環體。
label語句
用label語句可以在代碼中添加標籤。
start:for(var i=0;i<10;i++)
{alert(i);}
break語句和continue語句
break語句會立即退出循環,強制繼續執行循環後面的語句。而continue語句雖然也是立即退出循環,但退出循環後會從循環開始的頂部繼續執行。
var num =0;
outmost:
for (var i=0;i<10;i++){
for(var j=0;j<10;j++){
if(i==5 && j==5)
{break outmost;}
num++;
}
}
alert(num);//55
每個循環正常執行10次,num++語句執行100次,當i=5,j=5時,跳出整個循環,執行循環體之後的語句,共運行55次。
var num =0;
outmost:
for (var i=0;i<10;i++){
for(var j=0;j<10;j++){
if(i==5 && j==5)
{continue outmost;}
num++;
}
}
alert(num);//95
運行到i=5,j=5時,跳出outmost函數,從函數頂部開始運行,跳過了5次循環,共運行95次。
switch語句
switch(i){
case 1:
alert("1");
break;
case 2:
alert("2");
break;
case 3:
alert("3");
break;
default:
alert("0");
break;
}
輸入1,輸出1;輸入2,輸出2;輸入0,輸出0;
switch(i){
case 1:
alert("1");
case 2:
alert("2");
case 3:
alert("3");
default:
alert("0");
}
輸入1,輸出123;輸入2,輸出23。
switch(i){
case 1:
case 2:
alert("2");
break;
case 3:
alert("3");
break;
default:
alert("0");
break;
}
輸入1,2都輸出2。
try-catch語句
try{
try{
throw new Error("opps");
}
finally{
console.log("finally");
}
}
catch(ex){
console.error("outer",ex.message);
}//運行結果"finally" "outer""opps"
內層try拋出error後,尋找最近的catch語句,就要跳出本層try,跳出之前,先要運行finally,所以先輸出finally,再輸出”outer”“opps”。
try{
try{
throw new Error("opps");
}
catch(ex){
console.error("inner",ex.message);
finally{
console.log("finally");
}
}
catch(ex){
console.error("outer",ex.message);}
//運行結果"inner""opps" "finally"
try拋出異常,catch輸出”inner”“opps”,之後運行finally,輸出finally。
try{
try{
throw new Error("opps");
}
catch(ex){
console.error("inner",ex.message);
throw ex;
finally{
console.log("finally");
}
}
catch(ex){
console.error("outer",ex.message);}
//運行結果"inner""opps" "finally" "outer""opps"
try拋出異常,catch輸出”inner”“opps” ,catch又拋出異常,最近一次catch是外層循環,匹配catch需要跳出本次循環,跳出之前先執行finally,輸出”finally”,之後輸出catch語句”outer”“opps”。