1、if語句,if (condition) statement1 else statement2
condition(條件)可以是任意表達(dá)式;而且對這個(gè)表達(dá)式求值的結(jié)果不一定是布爾值。ECMAScript 會(huì)自動(dòng)調(diào)用 Boolean()轉(zhuǎn)換函數(shù)將這個(gè)表達(dá)式的結(jié)果轉(zhuǎn)換為一個(gè)布爾值。如果對 condition求值的結(jié)果是 true,則執(zhí)行 statement1 (語句 1),如果對 condition 求值的結(jié)果是 false,則執(zhí)行 statement2(語句 2)。
if (i > 25) {
alert("Greater than 25.");
} else if (i < 0) {
alert("Less than 0.");
} else {
alert("Between 0 and 25, inclusive.");
}
2、do-while語句,do { statemen } while (expression);
一種后測試循環(huán)語句,即只有在循環(huán)體中的代碼執(zhí)行之后,才會(huì)測試出口條件。
var i = 0;
do {
i += 2;
} while (i < 10);
console.log(i);
3、while語句,while(expression) statement
前測試循環(huán)語句, 也就是說, 在循環(huán)體內(nèi)的代碼被執(zhí)行之前,就會(huì)對出口條件求值。
var i = 0;
while (i < 10) {
i += 2;
}
4、for語句,for (initialization; expression; post-loop-expression) statement
前測試循環(huán)語句,但它具有在執(zhí)行循環(huán)之前初始化變量和定義循環(huán)后要執(zhí)行的代碼的能力。
var count = 10;
for (var i = 0; i < count; i++){
alert(i);
}
5、for-in語句,for (property in expression) statement
精準(zhǔn)的迭代語句,可以用來枚舉對象的屬性。
for (var propName in window) {
document.write(propName);
}
ECMAScript 對象的屬性沒有順序。因此,通過 for-in 循環(huán)輸出的屬性名的順序是不可預(yù)測的。具體來講,所有屬性都會(huì)被返回一次,但返回的先后次序可能會(huì)因?yàn)g覽器而異。
建議在使用 for-in 循環(huán)之前,先檢測確認(rèn)該對象的值不是 null 或 undefined。
6、label語句,label: statement
使用 label 語句可以在代碼中添加標(biāo)簽,以便將來使用。
start: for (var i=0; i < count; i++) {
alert(i);
}
7、break和continue語句
break 和 continue 語句用于在循環(huán)中精確地控制代碼的執(zhí)行。其中,break 語句會(huì)立即退出循環(huán),強(qiáng)制繼續(xù)執(zhí)行循環(huán)后面的語句。而 continue 語句雖然也是立即退出循環(huán),但退出循環(huán)后會(huì)從循環(huán)的頂部繼續(xù)執(zhí)行。
var num = 0;
for (var i=1; i < 10; i++) {
if (i % 5 == 0) {
break;
}
num++;
}
console.log(num); //4
var num = 0;
for (var i=1; i < 10; i++) {
if (i % 5 == 0) {
continue;
}
num++;
}
console.log(num); //8
break 和 continue 語句都可以與 label 語句聯(lián)合使用,從而返回代碼中特定的位置。這種聯(lián)合使用的情況多發(fā)生在循環(huán)嵌套的情況下,如下面的例子所示:
var num = 0;
outermost:
for (var i=0; i < 10; i++) {
for (var j=0; j < 10; j++) {
if (i == 5 && j == 5) {
break outermost;
}
num++;
}
}
console.log(num); //55
var num = 0;
outermost:
for (var i=0; i < 10; i++) {
for (var j=0; j < 10; j++) {
if (i == 5 && j == 5) {
continue outermost;
}
num++;
}
}
console.log(num); //95
8、with語句,with (expression) statement;
with 語句的作用是將代碼的作用域設(shè)置到一個(gè)特定的對象中,定義 with 語句的目的主要是為了簡化多次編寫同一個(gè)對象的工作。with 語句會(huì)導(dǎo)致性能下降,同時(shí)也會(huì)給調(diào)試代碼造成困難,不推薦使用,而且嚴(yán)格模式下不允許使用 with 語句,否則將視為語法錯(cuò)誤。
9、switch語句,switch (expression) { case value: statementbreak; default: statement}
switch 語句中的每一種情形(case)的含義是:“如果表達(dá)式等于這個(gè)值(value),則執(zhí)行后面的語句(statement)”。而 break 關(guān)鍵字會(huì)導(dǎo)致代碼執(zhí)行流跳出 switch 語句。如果省略 break 關(guān)鍵字,就會(huì)導(dǎo)致執(zhí)行完當(dāng)前 case 后,繼續(xù)執(zhí)行下一個(gè) case。最后的 default 關(guān)鍵字則用于在表達(dá)式不匹配前面任何一種情形的時(shí)候,執(zhí)行機(jī)動(dòng)代碼(因此,也相當(dāng)于一個(gè) else 語句)。
switch (i) {
case 25:
alert("25");
break;
case 35:
alert("35");
break;
case 45:
alert("45");
break;
default:
alert("Other");
}
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.");
}