前言
在程序設(shè)計(jì)語(yǔ)言里面有一種語(yǔ)句叫決策語(yǔ)句江场,可以使程序根據(jù)是否滿足特定的條件,運(yùn)行相對(duì)應(yīng)代碼窖逗。換言之址否,決策語(yǔ)句使得代碼具有一定的智能。
通過(guò)決策語(yǔ)句碎紊,我們可以實(shí)現(xiàn)一些數(shù)據(jù)與數(shù)據(jù)之間的比較佑附,例如:
- 1是否小于2 ?
- 1是否等于2 仗考?
- 1是否是數(shù)字 音同?
- ···
以上這些問(wèn)題都可以用“是”和“否”來(lái)回答,在JavaScript里這兩個(gè)答案稱為布爾值秃嗜。將布爾值設(shè)定為條件权均,讓代碼根據(jù)不同的布爾值來(lái)執(zhí)行不同的結(jié)果。
在這里舉一個(gè)最常見(jiàn)的例子:
如果水已經(jīng)煮沸了痪寻,那么我就可以開(kāi)始泡茶螺句,否則繼續(xù)等水煮沸。
這就是典型的決策語(yǔ)句橡类。其中“水是否煮沸“便是一個(gè)條件蛇尚,而答案就只有”是“或者”否“,這兩個(gè)答案就是布爾值”true“和”false“顾画∪〗伲”我“根據(jù)不同的布爾值,執(zhí)行”開(kāi)始泡茶“和”繼續(xù)等水煮沸“這兩種命令研侣。
if語(yǔ)句
if語(yǔ)句谱邪,是JavaScript里面的其中一種決策語(yǔ)句。像上述的例子庶诡,在JavaScript里面可以寫(xiě)成以下的代碼:
if (waterTemperature == 100) //判斷條件waterTemperature == 100
{
document.write ("水開(kāi)了惦银,開(kāi)始泡茶");//如果判斷條件為true,則執(zhí)行大括號(hào)內(nèi)的所有代碼
}
當(dāng)給waterTemperature
賦值為100的時(shí)候,解釋器就會(huì)調(diào)用Boolean()
把判斷條件轉(zhuǎn)換為布爾值扯俱,若得出的布爾值為true
书蚪,繼而執(zhí)行document.write("水開(kāi)了,開(kāi)始泡茶")
這段代碼迅栅;若得出的布爾值為false
殊校,則跳過(guò)大括號(hào)里面的代碼。
if...else語(yǔ)句
根據(jù)上面的例子读存,若也要給出一個(gè)水還沒(méi)有煮沸的時(shí)候的提醒为流,會(huì)這樣:
if (waterTemperature == 100) {
document.write ("水開(kāi)了,開(kāi)始泡茶");
}
if (waterTemperature != 100) {
document.write ("水還沒(méi)有煮沸让簿,再等等吧");
}
通過(guò)額外增加一個(gè)if語(yǔ)句敬察,來(lái)補(bǔ)充另外的情況。雖然這樣寫(xiě)沒(méi)有什么問(wèn)題拜英,但是當(dāng)額外的條件比較多的時(shí)候静汤,連續(xù)使用if語(yǔ)句會(huì)使代碼顯得比較累贅,這時(shí)候我們讓if配合else來(lái)使用:
if (waterTemperature >= 100) {
document.write ("水開(kāi)了居凶,開(kāi)始泡茶");
}//當(dāng)條件的布爾值為true所執(zhí)行的代碼
else {
document.write ("水還沒(méi)有煮沸,再等等吧")
}//當(dāng)條件的布爾值為false所執(zhí)行的代碼
補(bǔ)充
根據(jù)上述的例子藤抡,假如我們不小心侠碧,把比較運(yùn)算符等于(==)寫(xiě)成賦值運(yùn)算符(=)會(huì)怎樣?那么代碼就變成這樣了:
if (waterTemperature = 100) {
document.write ("水開(kāi)了缠黍,開(kāi)始泡茶")弄兜;
}
else {
document.write ("水還沒(méi)有煮沸,再等等吧")
}
條件部分變成了給waterTemperature
賦值100瓷式,
這時(shí)候解析器就會(huì)調(diào)用Boolean()來(lái)把waterTemperature = 100
轉(zhuǎn)換成布爾值替饿。這個(gè)條件永遠(yuǎn)是true,所以永遠(yuǎn)只執(zhí)行接下來(lái)的代碼贸典,永遠(yuǎn)顯示“水開(kāi)了视卢,開(kāi)始泡茶”。
問(wèn)題出在哪里呢廊驼?其實(shí)正是因?yàn)榘?code>==寫(xiě)成了=
据过。一個(gè)等號(hào)=
表示的是賦值,如a=b
妒挎,意思是把b的值賦予給a绳锅;兩個(gè)等號(hào)==
表示的才是比較操作。賦值表達(dá)式的結(jié)果是右操作數(shù)的值酝掩,只要右操作數(shù)的值不是0和NaN鳞芙,那么所有數(shù)值都會(huì)轉(zhuǎn)為布爾類型true。
如a==b
,表示比較a和b的值是否相等原朝。比如:
-
"haha" == "haha"
返回true闯割,因?yàn)樗鼈兪窍嗤淖址?/li> -
"ha" == "haha"
返回false,因?yàn)樗鼈兪遣煌淖址?/li> -
1 == 1
返回true竿拆,因?yàn)樗鼈兪窍嗤臄?shù)字宙拉; -
"1" == 1
也是返回true,解析器會(huì)把字符串"1"轉(zhuǎn)為為數(shù)字1丙笋,所以兩者相等谢澈。