5.JavaScript流程控制(if 語(yǔ)句纲熏、if else語(yǔ)句、if else if 語(yǔ)句(多分支語(yǔ)句)锄俄、三元表達(dá)式局劲、 switch分支流程控制)

1 - 流程控制

1.1 流程控制概念

? 在一個(gè)程序執(zhí)行的過(guò)程中,各條代碼的執(zhí)行順序?qū)Τ绦虻慕Y(jié)果是有直接影響的奶赠。很多時(shí)候我們要通過(guò)控制代碼的執(zhí)行順序來(lái)實(shí)現(xiàn)我們要完成的功能鱼填。

? 簡(jiǎn)單理解:流程控制就是來(lái)控制代碼按照一定結(jié)構(gòu)順序來(lái)執(zhí)行

? 流程控制主要有三種結(jié)構(gòu):順序結(jié)構(gòu)、分支結(jié)構(gòu)车柠、循環(huán)結(jié)構(gòu)

1.2 順序流程控制

?


1.3 分支流程控制

  • 分支結(jié)構(gòu)

? JS 語(yǔ)言提供了兩種分支結(jié)構(gòu)語(yǔ)句:if 語(yǔ)句剔氏、switch 語(yǔ)句

  • if 語(yǔ)句

    • 語(yǔ)法結(jié)構(gòu)
    // 條件成立執(zhí)行代碼塑猖,否則什么也不做
    if (條件表達(dá)式) {
        // 條件成立執(zhí)行的代碼語(yǔ)句
    }
    

    執(zhí)行思路: 如果 if 里面的條件表達(dá)式結(jié)果為真 true 則執(zhí)行大括號(hào)里面的 執(zhí)行語(yǔ)句
    如果if 條件表達(dá)式結(jié)果為假 則不執(zhí)行大括號(hào)里面的語(yǔ)句 則執(zhí)行if 語(yǔ)句后面的代碼

    語(yǔ)句可以理解為一個(gè)行為竹祷,循環(huán)語(yǔ)句和分支語(yǔ)句就是典型的語(yǔ)句。一個(gè)程序由很多個(gè)語(yǔ)句組成羊苟,一般情況下塑陵,會(huì)分割成一個(gè)一個(gè)的語(yǔ)句。

    • 執(zhí)行流程
  • if else語(yǔ)句(雙分支語(yǔ)句)

    • 語(yǔ)法結(jié)構(gòu)

      // 條件成立  執(zhí)行 if 里面代碼蜡励,否則執(zhí)行else 里面的代碼
      if (條件表達(dá)式) {
          // [如果] 條件成立執(zhí)行的代碼
      } else {
          // [否則] 執(zhí)行的代碼
      }
      
      
    • 執(zhí)行流程

  • 判斷閏年案例
<script>
        // 算法:能被4整除且不能整除100的為閏年(如2004年就是閏年令花,1901年不是閏年)或者能夠被 400 整除的就是閏年
        // 彈出prompt 輸入框,讓用戶輸入年份凉倚,把這個(gè)值取過(guò)來(lái)保存到變量中
        // 使用 if 語(yǔ)句來(lái)判斷是否是閏年兼都,如果是閏年,就執(zhí)行 if 大括號(hào)里面的輸出語(yǔ)句稽寒,否則就執(zhí)行 else里面的輸出語(yǔ)句
        // 一定要注意里面的且 &&  還有或者 || 的寫(xiě)法扮碧,同時(shí)注意判斷整除的方法是取余為 0
        var year = prompt('請(qǐng)您輸入年份:');
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
            alert('您輸入的年份是閏年');
        } else {
            alert('您輸入的年份是平年');
        }
    </script>
  • if else if 語(yǔ)句(多分支語(yǔ)句)

    • 語(yǔ)法結(jié)構(gòu)

      // 適合于檢查多重條件。
      if (條件表達(dá)式1) {
          語(yǔ)句1;
      } else if (條件表達(dá)式2)  {
          語(yǔ)句2慎王;
      } else if (條件表達(dá)式3)  {
         語(yǔ)句3蚓土;
       ....
      } else {
          // 上述條件都不成立執(zhí)行此處代碼
      }
      
      
    • 執(zhí)行邏輯

      如果條件表達(dá)式1 滿足就執(zhí)行 語(yǔ)句1,執(zhí)行完畢后,退出整個(gè)if 分支語(yǔ)句
      如果條件表達(dá)式1 不滿足赖淤,則判斷條件表達(dá)式2 滿足的話蜀漆,執(zhí)行語(yǔ)句2 以此類推
      如果上面的所有條件表達(dá)式都不成立,則執(zhí)行else 里面的語(yǔ)句
      注意點(diǎn)
      (1) 多分支語(yǔ)句還是多選1 最后只能有一個(gè)語(yǔ)句執(zhí)行
      (2) else if 里面的條件理論上是可以任意多個(gè)的
      (3) else if 中間有個(gè)空格

  • 判斷成績(jī)案例

<script>
        //  偽代碼   按照從大到小判斷的思路
        // 彈出prompt輸入框咱旱,讓用戶輸入分?jǐn)?shù)(score)确丢,把這個(gè)值取過(guò)來(lái)保存到變量中
        // 使用多分支 if else if 語(yǔ)句來(lái)分別判斷輸出不同的值
        var score = prompt('請(qǐng)您輸入分?jǐn)?shù):');
        if (score >= 90) {
            alert('寶貝,你是我的驕傲');
        } else if (score >= 80) {
            alert('寶貝莽龟,你已經(jīng)很出色了');
        } else if (score >= 70) {
            alert('你要繼續(xù)加油嘍');
        } else if (score >= 60) {
            alert('孩子蠕嫁,你很危險(xiǎn)');
        } else {
            alert('熊孩子,我不想和你說(shuō)話毯盈,我只想用鞭子和你說(shuō)話');
        }
    </script>

1.4 三元表達(dá)式

  • 語(yǔ)法結(jié)構(gòu)

    表達(dá)式1 ? 表達(dá)式2 : 表達(dá)式3;
    
  • 執(zhí)行思路

    • 如果表達(dá)式1為 true 剃毒,則返回表達(dá)式2的值,如果表達(dá)式1為 false搂赋,則返回表達(dá)式3的值
    • 簡(jiǎn)單理解: 就類似于 if else (雙分支) 的簡(jiǎn)寫(xiě)
  • 數(shù)字補(bǔ)0案例

<script>
        // 用戶輸入0~59之間的一個(gè)數(shù)字
        // 如果數(shù)字小于10赘阀,則在這個(gè)數(shù)字前面補(bǔ)0,(加0 拼接) 否則  不做操作
        // 用一個(gè)變量接受這個(gè)返回值,輸出
        var time = prompt('請(qǐng)您輸入一個(gè) 0 ~ 59 之間的一個(gè)數(shù)字');
        // 三元表達(dá)式   表達(dá)式 脑奠? 表達(dá)式1 :表達(dá)式2 
        var result = time < 10 ? '0' + time : time; //   把返回值賦值給一個(gè)變量
        alert(result);
    </script>

1.5 switch分支流程控制

  • 語(yǔ)法結(jié)構(gòu)
switch( 表達(dá)式 ){ 
      case value1:
          // 表達(dá)式 等于 value1 時(shí)要執(zhí)行的代碼
          break;
      case value2:
          // 表達(dá)式 等于 value2 時(shí)要執(zhí)行的代碼
          break;
      default:
          // 表達(dá)式 不等于任何一個(gè) value 時(shí)要執(zhí)行的代碼
  }
  • 關(guān)鍵字 switch 后面括號(hào)內(nèi)可以是表達(dá)式或值基公, 通常是一個(gè)變量

  • 關(guān)鍵字 case , 后跟一個(gè)選項(xiàng)的表達(dá)式或值,后面跟一個(gè)冒號(hào)

  • switch 表達(dá)式的值會(huì)與結(jié)構(gòu)中的 case 的值做比較

  • 如果存在匹配全等(===) 宋欺,則與該 case 關(guān)聯(lián)的代碼塊會(huì)被執(zhí)行轰豆,并在遇到 break 時(shí)停止,整個(gè) switch 語(yǔ)句代碼執(zhí)行結(jié)束

  • 如果所有的 case 的值都和表達(dá)式的值不匹配齿诞,則執(zhí)行 default 里的代碼

    注意: 執(zhí)行case 里面的語(yǔ)句時(shí)酸休,如果沒(méi)有break,則繼續(xù)執(zhí)行下一個(gè)case里面的語(yǔ)句祷杈。

  • switch 語(yǔ)句和 if else if 語(yǔ)句的區(qū)別

    • 一般情況下斑司,它們兩個(gè)語(yǔ)句可以相互替換
    • switch...case 語(yǔ)句通常處理 case為比較確定值的情況, 而 if…else…語(yǔ)句更加靈活但汞,常用于范圍判斷(大于宿刮、等于某個(gè)范圍)
    • switch 語(yǔ)句進(jìn)行條件判斷后直接執(zhí)行到程序的條件語(yǔ)句,效率更高私蕾。而if…else 語(yǔ)句有幾種條件僵缺,就得判斷多少次。
    • 當(dāng)分支比較少時(shí)踩叭,if… else語(yǔ)句的執(zhí)行效率比 switch語(yǔ)句高磕潮。
    • 當(dāng)分支比較多時(shí),switch語(yǔ)句的執(zhí)行效率比較高,而且結(jié)構(gòu)更清晰揉抵。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末亡容,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子冤今,更是在濱河造成了極大的恐慌闺兢,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件戏罢,死亡現(xiàn)場(chǎng)離奇詭異屋谭,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)龟糕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)桐磁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人讲岁,你說(shuō)我怎么就攤上這事我擂。” “怎么了缓艳?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵校摩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我阶淘,道長(zhǎng)衙吩,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任溪窒,我火速辦了婚禮坤塞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘澈蚌。我一直安慰自己摹芙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布惜浅。 她就那樣靜靜地躺著瘫辩,像睡著了一般伏嗜。 火紅的嫁衣襯著肌膚如雪坛悉。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天承绸,我揣著相機(jī)與錄音裸影,去河邊找鬼。 笑死军熏,一個(gè)胖子當(dāng)著我的面吹牛轩猩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼均践,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼晤锹!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起彤委,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鞭铆,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后焦影,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體车遂,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有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
  • 文/蒙蒙 一镐作、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧隆箩,春花似錦该贾、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至理澎,卻和暖如春逞力,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背糠爬。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工寇荧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人执隧。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓揩抡,卻偏偏與公主長(zhǎng)得像户侥,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子峦嗤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344