if語(yǔ)句
if (condition) {statement1} else {statement2};
其中的 condition(條件)可以是任意表達(dá)式;而且對(duì)這個(gè)表達(dá)式求值的結(jié)果不一定是布爾值元媚。
ECMAScript 會(huì)自動(dòng)調(diào)用 Boolean()轉(zhuǎn)換函數(shù)將這個(gè)表達(dá)式的結(jié)果轉(zhuǎn)換為一個(gè)布爾值狂打。如果對(duì) condition
求值的結(jié)果是 true物喷,則執(zhí)行 statement1(語(yǔ)句 1),如果對(duì) condition求值的結(jié)果是 false,則執(zhí)行 statement2
(語(yǔ)句 2)希停。而且這兩個(gè)語(yǔ)句既可以是一行代碼盯捌,也可以是一個(gè)代碼塊(以一對(duì)花括號(hào)括起來(lái)的多行代碼)淳衙。
do-while語(yǔ)句
do-while 語(yǔ)句是一種后測(cè)試循環(huán)語(yǔ)句,即只有在循環(huán)體中的代碼執(zhí)行之后挽唉,才會(huì)測(cè)試出口條件滤祖。
換句話說(shuō),在對(duì)條件表達(dá)式求值之前瓶籽,循環(huán)體內(nèi)的代碼至少會(huì)被執(zhí)行一次匠童。以下是 do-while 語(yǔ)句的
語(yǔ)法:
do {
statement
} while (expression);
tip:先執(zhí)行任務(wù)在對(duì)比結(jié)果,這種后測(cè)試循環(huán)語(yǔ)句最常用于循環(huán)體中的代碼至少要被執(zhí)行一次的情形塑顺;
while語(yǔ)句
while 語(yǔ)句屬于前測(cè)試循環(huán)語(yǔ)句汤求,在循環(huán)體內(nèi)的代碼被執(zhí)行之前,就會(huì)對(duì)出口條件求值严拒。因此扬绪,循環(huán)體內(nèi)的代碼有可能永遠(yuǎn)不會(huì)被執(zhí)行。
while(expression) {statement};
for語(yǔ)句
前測(cè)試循環(huán)語(yǔ)句裤唠,具有在執(zhí)行循環(huán)之前初始化變量和定義循環(huán)后要執(zhí)行的代
碼的能力挤牛。
for (initialization; expression; post-loop-expression) {statement};
for-in語(yǔ)句
for-in 語(yǔ)句是一種精準(zhǔn)的迭代語(yǔ)句,可以用來(lái)枚舉對(duì)象的屬性种蘸。
for (property in expression) {statement};
laber語(yǔ)句
使用 label 語(yǔ)句可以在代碼中添加標(biāo)簽墓赴,以便將來(lái)使用。
通俗理解給代碼塊起了個(gè)名字;以便將來(lái)使用
label: {statement} ;
laber 標(biāo)簽可以在將來(lái)由 break 或 continue 語(yǔ)句引用
break和continue語(yǔ)句
break 語(yǔ)句會(huì)立即退出循環(huán)航瞭,強(qiáng)制繼續(xù)執(zhí)行循環(huán)后面的語(yǔ)句诫硕。
而 continue 語(yǔ)句雖然也是立即退出循環(huán),但退出循環(huán)后會(huì)從循環(huán)的頂部繼續(xù)執(zhí)行(單純的跳過(guò)本次循環(huán))
tip:但如果使用過(guò)度刊侯,也會(huì)給調(diào)試帶來(lái)麻煩章办。在此,我們建議如果使用 label 語(yǔ)句,一定要使用描述性的標(biāo)簽藕届,同時(shí)不要嵌套過(guò)多的循環(huán)
with語(yǔ)句
with 語(yǔ)句的作用是將代碼的作用域設(shè)置到一個(gè)特定的對(duì)象中
var qs = location.search.substring(1);
var hostName = location.hostname;
var url = location.href;
//等價(jià)于
with(location){
var qs = search.substring(1);
var hostName = hostname;
var url = href;
}
tip:嚴(yán)格模式下不允許使用 with 語(yǔ)句挪蹭,否則將視為語(yǔ)法錯(cuò)誤。
大量使用 with 語(yǔ)句會(huì)導(dǎo)致性能下降翰舌,同時(shí)也會(huì)給調(diào)試代碼造成困難嚣潜,因此
在開(kāi)發(fā)大型應(yīng)用程序時(shí),不建議使用 with 語(yǔ)句椅贱。
switch語(yǔ)句
switch (expression) {
case value: statement
break;
case value: statement
break;
case value: statement
break;
case value: statement
break;
default: statement
}
switch 語(yǔ)句中的每一種情形(case)的含義是:“如果表達(dá)式等于這個(gè)值(value)懂算,則執(zhí)行后面的
語(yǔ)句(statement)”。而 break 關(guān)鍵字會(huì)導(dǎo)致代碼執(zhí)行流跳出 switch 語(yǔ)句庇麦。如果省略 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 語(yǔ)句)航棱。
switch 語(yǔ)句在比較值時(shí)使用的是全等操作符睡雇,因此不會(huì)發(fā)生類(lèi)型轉(zhuǎn)換(例如,
字符串"10"不等于數(shù)值 10)
函數(shù)
ECMAScript 中的函數(shù)使用 function 關(guān)鍵字來(lái)聲明饮醇,后跟一組參數(shù)以及函數(shù)體它抱。
函數(shù)的基本語(yǔ)法如下所示:
function functionName(arg0, arg1,...,argN) {
statements
}
函數(shù)可以通過(guò)其函數(shù)名來(lái)調(diào)用,后面還要加上一對(duì)圓括號(hào)和參數(shù)(圓括號(hào)中的參數(shù)如果有多個(gè)朴艰,
可以用逗號(hào)隔開(kāi))观蓄。
函數(shù)在任何時(shí)候都可以通過(guò)return 語(yǔ)句后跟要返回的值來(lái)實(shí)現(xiàn)返回值
function sum(num1, num2) {
return num1 + num2;
}
個(gè)函數(shù)會(huì)在執(zhí)行完 return 語(yǔ)句之后停止并立即退出,位于 return 語(yǔ)句之后的任何代碼
都永遠(yuǎn)不會(huì)執(zhí)行
function sum(num1, num2) {
return num1 + num2;
alert("Hello world"); // 永遠(yuǎn)不會(huì)執(zhí)行
}
理解參數(shù)
ECMAScript 函數(shù)不介意傳遞進(jìn)來(lái)多少個(gè)參數(shù)祠墅,也不在乎傳進(jìn)來(lái)參數(shù)是什么數(shù)據(jù)類(lèi)型侮穿。
原因是 ECMAScript 中的參數(shù)在內(nèi)部是用一個(gè)數(shù)組來(lái)表示的。函數(shù)接收
到的始終都是這個(gè)數(shù)組毁嗦,而不關(guān)心數(shù)組中包含哪些參數(shù)(如果有參數(shù)的話)亲茅。如果這個(gè)數(shù)組中不包含任何元素,無(wú)所謂狗准;如果包含多個(gè)元素芯急,也沒(méi)有問(wèn)題。實(shí)際上驶俊,在函數(shù)體內(nèi)可以通過(guò) arguments 對(duì)象來(lái)訪問(wèn)這個(gè)參數(shù)數(shù)組,從而獲取傳遞給函數(shù)的每一個(gè)參數(shù)免姿。