JavaScript-流程控制語句 > 條件分支語句

表達(dá)式和語句

表達(dá)式:一個(gè)表達(dá)式可以產(chǎn)生一個(gè)值,有可能是運(yùn)算涛舍、函數(shù)調(diào)用澄惊、有可能是字面量。表達(dá)式可以放在任何需要值的地方富雅。特點(diǎn):表達(dá)式會(huì)先執(zhí)行出一個(gè)結(jié)果掸驱,然后再參與其他程序。
語句:語句可以理解為一個(gè)行為没佑,循環(huán)語句和判斷語句就是典型的語句毕贼。一個(gè)程序有很多個(gè)語句組成,一般情況下分號(hào) ; 分割一個(gè)一個(gè)的語句蛤奢。語句可以認(rèn)為是給計(jì)算機(jī)的一個(gè)指令鬼癣,執(zhí)行這段代碼。一般語句以分號(hào)結(jié)束远剩,特殊的結(jié)構(gòu)除外扣溺。
流程控制語句:通過一些特殊結(jié)構(gòu)可以讓 js 代碼加載時(shí)骇窍,要么可以跳過一部分不加載瓜晤,或者可以循環(huán)加載一段代碼。包括:條件分支語句腹纳、循環(huán)語句痢掠。


if 語句

if 語句是最常用的條件分支語句驱犹,作用就是通過某個(gè)指定的判斷條件,決定走哪個(gè)分支的代碼足画。
結(jié)構(gòu)如下:

if (condition expression) {
    statement1;
} else {
    statement2;
}
  • condition expression:條件表達(dá)式雄驹,可以是任意的代碼或者表達(dá)式,參與程序過程都會(huì)強(qiáng)制得到一個(gè)布爾值執(zhí)行結(jié)果淹辞。表達(dá)式医舆,js 中遇到任何表達(dá)式都會(huì)先計(jì)算出一個(gè)結(jié)果然后才能繼續(xù)參與程序。
  • statement:結(jié)構(gòu)體象缀,js 中可以用 {} 包括一行到多行語句蔬将,這些語句整體組成了一個(gè)結(jié)構(gòu)體,結(jié)構(gòu)體中的語句要執(zhí)行就都執(zhí)行央星,要不執(zhí)行就都不執(zhí)行霞怀。
  • if:如果
  • else:否則

總結(jié):如果條件表達(dá)式為真 true,執(zhí)行結(jié)構(gòu)體 1莉给,否則執(zhí)行結(jié)構(gòu)體 2毙石。

注意事項(xiàng)

  1. if 語句可以實(shí)現(xiàn)選擇的功能,兩個(gè)分支可以選擇一個(gè)執(zhí)行颓遏,不會(huì)都執(zhí)行徐矩。
  2. if 語句可以不寫 else 分支,表示條件成立就執(zhí)行后面的結(jié)構(gòu)體叁幢,如果條件不成立丧蘸,直接跳出 if 語句不執(zhí)行。
  3. if 語句后面的機(jī)構(gòu)體如果是單行語句組成遥皂,可以省略 {} 不寫力喷。不建議省略大括號(hào),容易出現(xiàn)程序錯(cuò)誤演训。
  4. if 語句能夠控制自己內(nèi)部的流程弟孟,但是不論走哪個(gè)分支,結(jié)束后都要繼續(xù)執(zhí)行 if 語句后面的其他語句样悟,叫做殊途同歸現(xiàn)象拂募。

多分支 if 語句

包含多個(gè)判斷條件,對(duì)應(yīng)多個(gè)分支窟她。
語法:if……else if……else if……else……
如果……否則如果……否則如果…… 否則……
結(jié)構(gòu)如下:

if (條件1) {
    滿足條件1陈症,執(zhí)行的結(jié)構(gòu)體
} else if (條件2) {
    不滿足條件1,滿足條件2震糖,執(zhí)行的結(jié)構(gòu)體
} else if (條件3) {
    不滿足條件1/2录肯,滿足條件3,執(zhí)行的結(jié)構(gòu)體
} else {
    不滿足前面所有條件吊说,執(zhí)行的結(jié)構(gòu)體
}

注意事項(xiàng)

  1. 多分支 if 語句中可以有多個(gè) else if 的分支论咏,但是 else 分支只能有一個(gè)优炬,必須出現(xiàn)在最后,作為備用的選項(xiàng)厅贪,而且 else 也可以省略不寫蠢护,表示前面條件如果都不滿足,直接跳出不走任何分支养涮。
  2. 多分支 if 語句有跳樓現(xiàn)象:條件從上往下依次驗(yàn)證葵硕,如果滿足了某個(gè)條件,會(huì)立即執(zhí)行后面的結(jié)構(gòu)體贯吓,執(zhí)行完之后贬芥,不會(huì)再往后驗(yàn)證其他的條件了,而是從這一層直接跳樓跳出if語句宣决,這就是跳樓現(xiàn)象蘸劈。

if 語句嵌套

if 語句的結(jié)構(gòu)體部分,代碼可以是任意的代碼尊沸,甚至是另外一組 if 語句威沫,也就是 if 語句內(nèi)部嵌套了 if 語句。如果想執(zhí)行內(nèi)部 if 語句的某個(gè)分支洼专,必須滿足外部 if 語句的條件棒掠,同時(shí)還要滿足內(nèi)部 if 語句的某個(gè)條件。優(yōu)點(diǎn)是可以簡化多分支 if 語句屁商。


三元表達(dá)式

三元表達(dá)式又叫三元運(yùn)算符烟很,必須有三個(gè)操作數(shù)參與的運(yùn)算。操作符號(hào):? :蜡镶。
在參與 js 程序時(shí)雾袱,都必須先計(jì)算出表達(dá)式結(jié)果,才能參與后續(xù)程序官还,由于三元表達(dá)式具備了一些選擇的效果芹橡,所以也是一種條件分支語句。

語法:boolean_expression ? true_value : false_value;

  • boolean_expression:布爾表達(dá)式望伦,表達(dá)式在參與三元運(yùn)算中必須求得一個(gè)布爾類型的值林说,要么是 true,要么是 false屯伞,結(jié)果作為判斷依據(jù)腿箩,判斷到底去:前面的值還是后面的值。
  • true_value:布爾表達(dá)式的值為真時(shí)劣摇,三元表達(dá)式的結(jié)果珠移。
  • false_value:布爾表達(dá)式的值為假時(shí),三元表達(dá)式的結(jié)果。

作用:根據(jù)布爾表達(dá)式的結(jié)果剑梳,如果為真唆貌,三元表達(dá)式結(jié)果就是真值滑潘,如果為假垢乙,三元表達(dá)式結(jié)果就是假值。

雖然 if 語句可以模擬三元表達(dá)式语卤,但是三元表達(dá)式有自己的優(yōu)點(diǎn):

  1. 二選一的情況下追逮,三元表達(dá)式結(jié)構(gòu)更加簡單。
  2. 三元表達(dá)式作為一個(gè)表達(dá)式參與程序時(shí)必須運(yùn)算出結(jié)果才能參與粹舵,可以利用這個(gè)特點(diǎn)钮孵,將二選一結(jié)果賦值給一個(gè)變量。

遇到給一個(gè)變量根據(jù)條件二選一賦值的情況眼滤,可以使用三元表達(dá)式巴席。


switch語句

開關(guān)語句允許一個(gè)程序求一個(gè)表達(dá)式的值,并且嘗試去匹配表達(dá)式的值到一個(gè) case 標(biāo)簽诅需。如果匹配成功漾唉,這個(gè)程序執(zhí)行相關(guān)的語句。
語法結(jié)構(gòu)如下:

switch (表達(dá)式) {
    case 值1:
        結(jié)構(gòu)體1;
        break;
    case 值2:
        結(jié)構(gòu)體2;
        break;
    ……
    default: 
        結(jié)構(gòu)體n堰塌;
        break;
}
  • switch:關(guān)鍵字表示開始進(jìn)入一個(gè)開關(guān)語句赵刑。
  • 表達(dá)式:會(huì)求出一個(gè)具體的值,將這個(gè)值去與 {} 內(nèi)部的 case 后面的值進(jìn)行對(duì)比场刑、匹配般此,如果值相等表示匹配成功。匹配相等時(shí)牵现,方式是進(jìn)行全等于匹配铐懊,不止值要相等,數(shù)據(jù)類型也要相等瞎疼。
  • case:示例的意思居扒,作為關(guān)鍵字后面必須跟一個(gè)空格,書寫匹配的值丑慎。
  • case 后面的結(jié)構(gòu)體:每個(gè) case 匹配成功之后要執(zhí)行的語句喜喂。
  • break:用于打斷結(jié)構(gòu)體,直接跳出程序竿裂,模擬跳樓現(xiàn)象玉吁。
  • default:相當(dāng)于if語句中的 else,否則的情況腻异,如果前面的 case 都不匹配进副,執(zhí)行 default 后面的語句。

switch 語句首先會(huì)將小括號(hào)內(nèi)的表達(dá)式計(jì)算出一個(gè)結(jié)果,用結(jié)果去匹配結(jié)構(gòu)體內(nèi)部的 case影斑;從上往下進(jìn)行匹配给赞,如果匹配成功,會(huì)立即執(zhí)行這個(gè) case 后面的語句矫户,直到遇到一個(gè) break 跳出整個(gè) switch 語句片迅;如果前面的 case 沒有匹配成功,會(huì)跳過 case 之間的語句皆辽,去匹配下一個(gè) case柑蛇,直到匹配成功,如果都不成功就執(zhí)行 default 后面的語句驱闷。

注意事項(xiàng)

  • default 可以不寫耻台,相當(dāng)于 if 語句沒有 else。
  • break 關(guān)鍵字:根據(jù)結(jié)構(gòu)需要有時(shí)必須在每個(gè) case 后面都要寫空另,為了模擬跳樓現(xiàn)象盆耽,如果不寫 break,對(duì)應(yīng)的 case 后面的語句執(zhí)行之后扼菠,不會(huì)跳出結(jié)構(gòu)體摄杂,會(huì)繼續(xù)想下執(zhí)行其他 case 的后面的語句,直到遇到一個(gè) break娇豫。

總結(jié)

總結(jié):實(shí)際工作中使用三種語句的情景匙姜。
if 語句:最常用的語句,所有的判斷情況都能夠書寫冯痢。
三元表達(dá)式:多用于給變量賦值根據(jù)條件二選一的情況氮昧。
switch 語句:多用于給一個(gè)表達(dá)式去匹配多種固定值可能性的情況。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載浦楣,如需轉(zhuǎn)載請(qǐng)通過簡信或評(píng)論聯(lián)系作者袖肥。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市振劳,隨后出現(xiàn)的幾起案子椎组,更是在濱河造成了極大的恐慌,老刑警劉巖历恐,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寸癌,死亡現(xiàn)場離奇詭異,居然都是意外死亡弱贼,警方通過查閱死者的電腦和手機(jī)蒸苇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吮旅,“玉大人溪烤,你說我怎么就攤上這事。” “怎么了檬嘀?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵槽驶,是天一觀的道長。 經(jīng)常有香客問我鸳兽,道長掂铐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任贸铜,我火速辦了婚禮堡纬,結(jié)果婚禮上聂受,老公的妹妹穿的比我還像新娘蒿秦。我一直安慰自己,他們只是感情好蛋济,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布棍鳖。 她就那樣靜靜地躺著,像睡著了一般碗旅。 火紅的嫁衣襯著肌膚如雪渡处。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天祟辟,我揣著相機(jī)與錄音医瘫,去河邊找鬼。 笑死旧困,一個(gè)胖子當(dāng)著我的面吹牛醇份,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吼具,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼僚纷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拗盒?” 一聲冷哼從身側(cè)響起怖竭,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎陡蝇,沒想到半個(gè)月后痊臭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡登夫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年广匙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悼嫉。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡艇潭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蹋凝,我是刑警寧澤鲁纠,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站鳍寂,受9級(jí)特大地震影響改含,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜迄汛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一捍壤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鞍爱,春花似錦鹃觉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至沉填,卻和暖如春疗隶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背翼闹。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國打工斑鼻, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人猎荠。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓坚弱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親法牲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子史汗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容