(建議收藏)JS基礎(chǔ)入門(mén)四 - 流程語(yǔ)句
一、條件語(yǔ)句
條件if語(yǔ)句,用來(lái)指定符合條件后需要執(zhí)行的語(yǔ)句,不符合條件不執(zhí)行。
類(lèi)似于選擇器,選擇正確的答案,必須符合題干條件。
條件語(yǔ)句有很多種語(yǔ)法格式,如下:
只有if關(guān)鍵字的條件語(yǔ)句
if(條件表達(dá)式){
當(dāng)條件表達(dá)式成立的情況下才會(huì)執(zhí)行的語(yǔ)句
}
案例:判斷一個(gè)人的年齡是否滿(mǎn)18歲,如果滿(mǎn)足了,那么你可以進(jìn)入網(wǎng)站繼續(xù)觀看暴力電影

????????滿(mǎn)足條件,執(zhí)行大括號(hào)中的語(yǔ)句體;不滿(mǎn)足條件,跳出if語(yǔ)句,繼續(xù)執(zhí)行if語(yǔ)句后面的代碼。
存在 else 的if語(yǔ)句
if(條件表達(dá)式){
?????當(dāng)條件表達(dá)式成立的情況下才會(huì)執(zhí)行的語(yǔ)句
}else{
????條件表達(dá)式不成立執(zhí)行的語(yǔ)句
}

通過(guò)觀察,不難發(fā)現(xiàn),if...else語(yǔ)句 可以和 三元運(yùn)算進(jìn)行轉(zhuǎn)換,如上代碼,可以用三元表達(dá)式優(yōu)化,如下:

if else存在的多條件判斷語(yǔ)句
if(條件一){
????條件一滿(mǎn)足執(zhí)行的語(yǔ)句體
}else if(條件二){
????不滿(mǎn)足條件一,滿(mǎn)足條件二執(zhí)行的語(yǔ)句體
}....else if(條件N){
????不滿(mǎn)足N之前的條件,滿(mǎn)足條件N執(zhí)行的語(yǔ)句體
}else{
????以上所有的條件都不滿(mǎn)足執(zhí)行的語(yǔ)句
}

注意:if語(yǔ)句最終只會(huì)執(zhí)行一個(gè)滿(mǎn)足條件的大括號(hào)中的語(yǔ)句
省略大括號(hào)的情況
如果if語(yǔ)句的大括號(hào)只有一條

如果有兩條執(zhí)行語(yǔ)句,省略大括號(hào)的情況下,直接報(bào)錯(cuò)


二、選擇語(yǔ)句
switch語(yǔ)句,這是一個(gè)選擇語(yǔ)句,根據(jù)條件去匹配對(duì)應(yīng)的值,匹配成功,執(zhí)行這條匹配下的語(yǔ)句。
語(yǔ)法格式
switch(表達(dá)式){
case ?值1:
語(yǔ)句體1;
break;
case 值2:
語(yǔ)句體2;
break;
......
case 值N:
語(yǔ)句體N;
break;
default:
以上都不滿(mǎn)足執(zhí)行的語(yǔ)句體;
break;
}
注:default 語(yǔ)句可以寫(xiě)在 switch 中的任何位置,都是在 case 值都匹配不到的時(shí)候執(zhí)行,習(xí)慣上放到最后。
default也可以省略,當(dāng)不滿(mǎn)足所有case時(shí),不執(zhí)行任何操作,直接跳出switch。
break是控制語(yǔ)句,打斷的意思;這里用來(lái)跳出 switch 語(yǔ)句。也就是遇到break 語(yǔ)句就結(jié)束了。
需求一:請(qǐng)輸入1-7之間的數(shù)字,判斷今天是星期幾

變種
switch 中的表達(dá)式書(shū)寫(xiě) true, 在 case 后面去寫(xiě)條件表達(dá)式。當(dāng) case 后面條件表達(dá)式成立,即執(zhí)行對(duì)應(yīng)的語(yǔ)句體,否則繼續(xù)向下匹配,直到匹配成功,遇到 break 跳出。
需求三:根據(jù)用戶(hù)輸入的性別和年齡,判斷用戶(hù)是否滿(mǎn)足結(jié)婚年齡(男:23 ?女:20)

三、循環(huán)語(yǔ)句
生活見(jiàn)到的循環(huán)事件有:商場(chǎng)的電梯、傳送帶、拖拉機(jī)傳送帶、工廠中的機(jī)器、驢拉磨。
循環(huán)指的其實(shí)就是只要符合一定的條件,就會(huì)不停的執(zhí)行某個(gè)動(dòng)作。直到通過(guò)外力或者不符合條件后,才會(huì)結(jié)束循環(huán)。
在程序中的循環(huán)有三種:while循環(huán)、do...while循環(huán)、for循環(huán)。
3.1 while循環(huán)
語(yǔ)法格式:
while(條件表達(dá)式){
????當(dāng)條件表達(dá)式成立,執(zhí)行此循環(huán)體
}
需求:循環(huán)輸出 100 次 “Hello World!!”

執(zhí)行順序:
先定義表達(dá)式需要的變量,并賦初始值 var i = 0;
判斷 while 循環(huán)中的表達(dá)式 i < 100是否成立
如果表達(dá)式成立,那么執(zhí)行大括號(hào)中的循環(huán)體語(yǔ)句
console.log("Hello World!!");
并從循環(huán)體中,改變控制條件的變量的值 ?i++
重復(fù)執(zhí)行第2步、第3步,直到 while 循環(huán)中的表達(dá)式 i < 100不成立,跳出循環(huán)為止
練習(xí):循環(huán)輸出1-100之間的所有整數(shù)(使用while循環(huán)實(shí)現(xiàn))
3.2 do...while循環(huán)
語(yǔ)法格式
do{
????循環(huán)體
}while(條件表達(dá)式);
不難發(fā)現(xiàn),do..while 和 while循環(huán)最大的區(qū)別在于:do...while不管條件是否成立,都會(huì)至少執(zhí)行一次循環(huán)。
需求:實(shí)現(xiàn) 10 次 “Hello World!” 的控制臺(tái)輸出。

解析:
當(dāng) i = 0 時(shí),打印第 1 次 “Hello World!” ?打印完成 i 自增變成 1
改變后的 i = 2 ?去和10做對(duì)比 ? i = 2 < 10 成立,條件成立,繼續(xù)執(zhí)行循環(huán)體 ?打印第 3 次 “Hello World!” ?打印完成 i 自增變成 3
..... ? ? 5. 改變后的 i = 9 ?去和10做對(duì)比 ? i = 9 < 10 成立,條件成立,繼續(xù)執(zhí)行循環(huán)體 ?打印第 10 次 “Hello World!” ?打印完成 i 自增變成10 ? ? ? 6. 改變后的 i = 10 ?去和10做對(duì)比 ? i = 9 == 10 成立,條件不成立,跳出循環(huán)
改變后的 i = 1 ?去和10做對(duì)比 ? i = 1 < 10 成立,條件成立,繼續(xù)執(zhí)行循環(huán)體 ?打印第 2 次 “Hello World!” ?打印完成 i 自增變成 2
練習(xí):輸出 1 - 100 之間,可以同時(shí)被 3 ?和 ?7 整除的整數(shù)(do...while實(shí)現(xiàn))。
3.3 for循環(huán)
語(yǔ)法格式:
for(初始化變量; 條件表達(dá)式; 變量操作){
????????循環(huán)體
}
執(zhí)行步驟:
初始化變量
判斷條件表達(dá)式是否成立
條件表達(dá)式成立的情況下,執(zhí)行循環(huán)體
變量的操作
繼續(xù)執(zhí)行第 2、3、4步,直到第 2 步中的條件表達(dá)式不成立為止,跳出循環(huán)

3.4 窮舉思想
概述:我們想要得到一組數(shù)據(jù),這些數(shù)據(jù)有特定的場(chǎng)景要求,計(jì)算機(jī)沒(méi)有辦法幫我們輸出這些數(shù)據(jù)。我們需要人為的去編寫(xiě)一段程序,來(lái)實(shí)現(xiàn)這個(gè)功能:將所有可能符合要求數(shù)據(jù),一一的列舉出來(lái),然后認(rèn)為設(shè)置限制條件,將符合條件的數(shù)據(jù)篩選出來(lái),不滿(mǎn)足的跳過(guò),繼續(xù)驗(yàn)證下一個(gè)可能符合要求的數(shù)據(jù),直到把所有可能的數(shù)據(jù)都驗(yàn)證一遍。這個(gè)方法就叫做窮舉法,窮舉法也叫全舉法。
將可能符合要求的數(shù)據(jù),使用for循環(huán)進(jìn)行一一列舉(遍歷);
在for循環(huán)的內(nèi)部,使用if條件語(yǔ)句對(duì)這些可能符合條件的數(shù)據(jù),進(jìn)行一一驗(yàn)證,篩選出真正的符合條件的數(shù)據(jù)。
代碼演示:提示用戶(hù)輸入一個(gè)大于0的整數(shù),在控制臺(tái)輸出這個(gè)數(shù)字所有的約數(shù)

四、控制語(yǔ)句
一般情況下,我們?cè)趫?zhí)行循環(huán)時(shí),只要是滿(mǎn)足循環(huán)條件,那么循環(huán)體就會(huì)一直執(zhí)行下去。
這個(gè)時(shí)候,我們想要在循環(huán)時(shí),達(dá)到某種條件時(shí),控制循環(huán)的執(zhí)行,那么就用到控制語(yǔ)句。
控制語(yǔ)句有兩個(gè):break ?和 continue
需求:遍歷1-10之間的數(shù)字,當(dāng)數(shù)字是6的時(shí)候,跳出循環(huán);打印結(jié)果:1,2,3,4,5


continue 繼續(xù)。在JS中,一般應(yīng)用于循環(huán)語(yǔ)句中,用來(lái)跳過(guò)本次循環(huán)繼續(xù)下一個(gè)循環(huán)
需求:遍歷1-10之間的數(shù)字,當(dāng)數(shù)字是6的時(shí)候,跳過(guò)本次循環(huán)繼續(xù)下一次循環(huán);打印結(jié)果:1,2,3,4,5,7,8,9,10


多層嵌套循環(huán)下,跳出或跳過(guò)指定循環(huán)

