JavaScript快速入門05-流程控制

為什么使用流程控制绒北?

我們?cè)趯慾s代碼時(shí),一行一行的寫艰管,系統(tǒng)也會(huì)一行一行的進(jìn)行執(zhí)行,但很多時(shí)候我們希望系統(tǒng)按照我們的意愿進(jìn)行執(zhí)行顶伞,在特定的時(shí)候饵撑,有些代碼需要跳過(guò)剑梳,或者有些執(zhí)行要重復(fù)執(zhí)行多次,這時(shí)我們就要使用流程控制語(yǔ)句滑潘。

在js中流程控制語(yǔ)句分為三類:
順序結(jié)構(gòu)(從下往下)
分支結(jié)構(gòu)(if,switch)
循環(huán)結(jié)構(gòu)(for,while)

順序結(jié)構(gòu)

順序結(jié)構(gòu)是程序中最基本的流程垢乙,正常的一段代碼,包含在一對(duì)大括號(hào)中语卤,表示一個(gè)代碼塊追逮,程序會(huì)按照代碼的先后順序,依次執(zhí)行粹舵。

    {
        var name="小明";
        var money=100;
        console.log(name + "看看了兜里钮孵,只剩下" +money+ "元.");
    }

這里我們寫了三行代碼,定義了一個(gè)名字叫小明的人眼滤,兜里只有100元錢巴席,再運(yùn)行后系統(tǒng)會(huì)一條一條進(jìn)行執(zhí)行:
首先系統(tǒng)會(huì)創(chuàng)建一個(gè)name的string型變量,然后再創(chuàng)建一個(gè)money的number型變量诅需,最后在控制臺(tái)辦輸出一段文字漾唉。

分支結(jié)構(gòu)(if,switch)

在js中分支結(jié)構(gòu)有兩個(gè)語(yǔ)句可以選擇使用,分別是if語(yǔ)句和switch語(yǔ)句堰塌。

單一條件的if語(yǔ)句

具體的語(yǔ)法形式如下:

if(布爾表達(dá)式)
{
  語(yǔ)句塊;
}

比如小明看到餐廳里有一只烤乳豬赵刑,價(jià)格為300元,可是看了看兜里的錢發(fā)現(xiàn)錢不夠场刑,我們?cè)诔绦蚶锞涂梢赃@樣寫:

        var name = "小明";
        var money = 100;
        var pig = 300;
        if (money > pig) {
            money -= pig;
            console.log(name + "買了一只豬");
            console.log(name + "看看了兜里般此,只剩下" + money + "元.");
        }

當(dāng)系統(tǒng)執(zhí)行到if語(yǔ)句時(shí),會(huì)先對(duì)(money < pig)進(jìn)行運(yùn)行,如果結(jié)果為真時(shí)铐懊,會(huì)運(yùn)行{...}內(nèi)的代碼屎勘。但這時(shí)小明的錢不夠買一只豬,程序判斷為假居扒,所以{...}內(nèi)的代碼會(huì)被程序跳過(guò)概漱。
但這時(shí)你會(huì)問(wèn)小明錢不夠會(huì)怎么辦呢?

二選一的if語(yǔ)句

我們可以通過(guò)在if(如果...)語(yǔ)句后面緊跟一個(gè)else(否則...)來(lái)實(shí)現(xiàn)喜喂。

        var name = "小明";
        var money = 100;
        var pig = 300;
        if (money > pig){
            money -= pig;
            console.log(name + "買了一只豬");
            console.log(name + "看看了兜里瓤摧,只剩下" + money + "元.");
        }
        else {
            console.log(name + "看看了兜里,只剩下" + money + "元.");
            console.log(name + "嘆了口氣玉吁,轉(zhuǎn)身離開.");
        }
多選一的if語(yǔ)句

這時(shí)小明發(fā)現(xiàn)餐廳里還有雞照弥,他決定試一試,我們繼續(xù)用if語(yǔ)句來(lái)實(shí)現(xiàn)进副。

        var name = "小明";
        var money = 100;
        var pig = 300;
        var chicken=200;
        var fish=100;
        if (money > pig){
            money -= pig;
            console.log(name + "買了一只豬");
            console.log(name + "看看了兜里这揣,只剩下" + money + "元.");
        }
        else if(money>chicken){
            money -= chicken;
            console.log(name + "買了一只雞");
            console.log(name + "看看了兜里,只剩下" + money + "元.");
        }
        else if(money>fish){
            money -= fish;
            console.log(name + "買了一只魚");
            console.log(name + "看看了兜里影斑,只剩下" + money + "元.");
        }
        else{
            console.log(name + "嘆了口氣给赞,轉(zhuǎn)身離開.");
        }
if(布爾表達(dá)式 1)
{
    語(yǔ)句塊 1;
}else if(布爾表達(dá)式 2){
    語(yǔ)句塊 2;
}
...
else{
    語(yǔ)句塊 n;
}

if說(shuō)句可以這樣循環(huán)嵌套的寫下去,但是選項(xiàng)一多后矫户,非常不利于閱讀片迅,這時(shí)我們可以什么switch說(shuō)句來(lái)代替。

switch語(yǔ)句
switch(表達(dá)式){
    case 值1:
        語(yǔ)句體1;
        break;
    case 值2:
        語(yǔ)句體2;
        break;
    ...
    default:     //默認(rèn)值皆辽,當(dāng)其它條件不滿足時(shí)
        語(yǔ)句體N+1;
        break;
}

用switch來(lái)改來(lái)上面的代碼如下:

        switch (true) {
            case money >= pig:
                money -= pig;
                console.log(name + "買了一只豬");
                console.log(name + "看看了兜里柑蛇,只剩下" + money + "元.");
                break;
            case money >= chicken:
                money -= chicken;
                console.log(name + "買了一只雞");
                console.log(name + "看看了兜里,只剩下" + money + "元.");
                break;
            case money >= fish:
                money -= fish;
                console.log(name + "買了一只魚");
                console.log(name + "看看了兜里驱闷,只剩下" + money + "元.");
                break;
            default:
                console.log(name + "嘆了口氣耻台,轉(zhuǎn)身離開.");
                break;
        }

循環(huán)結(jié)構(gòu)

假如我們需要運(yùn)行代碼多次時(shí),我們可以使用循環(huán)結(jié)構(gòu)空另。
javaScript支持不同類型的循環(huán):

  • for 多次遍歷代碼塊
  • for/in 遍歷對(duì)象屬性
  • while 當(dāng)指定條件為 true 時(shí)循環(huán)一段代碼塊
  • do/while 當(dāng)指定條件為 true 時(shí)循環(huán)一段代碼塊
For 循環(huán)
for (語(yǔ)句 1; 語(yǔ)句 2; 語(yǔ)句 3) {
     要執(zhí)行的代碼塊
}

語(yǔ)句 1 在循環(huán)(代碼塊)開始之前執(zhí)行盆耽。
語(yǔ)句 2 定義運(yùn)行循環(huán)(代碼塊)的條件。
語(yǔ)句 3 會(huì)在循環(huán)(代碼塊)每次被執(zhí)行后執(zhí)行痹换。

for (i = 0; i < 5; i++) {
     console.log("數(shù)字是 " + i );
}
While循環(huán)

先判斷征字,再執(zhí)行代碼。

while (條件) {
    要執(zhí)行的代碼塊
}
while (i < 10) {
     console.log("數(shù)字是 " + i );
     i++;
}
Do/While 循環(huán)

先執(zhí)行代碼娇豫,再進(jìn)行判斷匙姜,循環(huán)至少進(jìn)行一次。

do {
    要執(zhí)行的代碼塊
}
while (條件);
do {
    console.log("數(shù)字是 " + i );
    i++;
 }
while (i < 10);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載冯痢,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者氮昧。
  • 序言:七十年代末框杜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子袖肥,更是在濱河造成了極大的恐慌咪辱,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件椎组,死亡現(xiàn)場(chǎng)離奇詭異油狂,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)寸癌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門专筷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蒸苇,你說(shuō)我怎么就攤上這事磷蛹。” “怎么了溪烤?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵味咳,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我檬嘀,道長(zhǎng)槽驶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任枪眉,我火速辦了婚禮捺檬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贸铜。我一直安慰自己,他們只是感情好聂受,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布蒿秦。 她就那樣靜靜地躺著,像睡著了一般蛋济。 火紅的嫁衣襯著肌膚如雪棍鳖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天碗旅,我揣著相機(jī)與錄音渡处,去河邊找鬼。 笑死祟辟,一個(gè)胖子當(dāng)著我的面吹牛医瘫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播旧困,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼醇份,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼稼锅!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起僚纷,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤矩距,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后怖竭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锥债,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年痊臭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赞弥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡趣兄,死狀恐怖绽左,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情艇潭,我是刑警寧澤拼窥,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站蹋凝,受9級(jí)特大地震影響鲁纠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鳍寂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一改含、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧迄汛,春花似錦捍壤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至睹逃,卻和暖如春盗扇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背沉填。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工疗隶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人翼闹。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓斑鼻,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親橄碾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子卵沉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

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