流程控制

1 代碼塊

簡(jiǎn)介:
程序是由一條一條語(yǔ)句構(gòu)成的归榕,語(yǔ)句是按照自上向下的順序一條一條執(zhí)行的猬错,在JS中可以使用{}來為語(yǔ)句進(jìn)行分組
同一個(gè){}中的語(yǔ)句我們稱為是一組語(yǔ)句腌零,他們要么都執(zhí)行,要么都不執(zhí)行
使用:
JS中的代碼塊诊胞,只具有分組的作用,沒有其他的用途
代碼塊里面的內(nèi)容锹杈,在外部是完全可見的

2 流程控制語(yǔ)句

基本概念:
默認(rèn)情況下撵孤,程序的運(yùn)行流程是這樣的:運(yùn)行程序后,系統(tǒng)會(huì)按書寫從上至下順序執(zhí)行程序中的每一行代碼竭望,但是這樣并不能滿足我們所有的開發(fā)需求
實(shí)際開發(fā)中邪码,我們需要根據(jù)不同的條件執(zhí)行不同的代碼或者重復(fù)執(zhí)行某一段代碼
為了方便我們控制程序的運(yùn)行流程,JavaScript提供3種流程結(jié)構(gòu)咬清,不同的流程結(jié)構(gòu)可以實(shí)現(xiàn)不同的運(yùn)行流程。分別是順序旧烧、選擇喻圃、循環(huán)三種基本控制結(jié)構(gòu)構(gòu)造
1)順序結(jié)構(gòu):默認(rèn)的流程結(jié)構(gòu)。按照書寫順序從上至下執(zhí)行每一條語(yǔ)句
2)選擇結(jié)構(gòu):對(duì)給定的條件進(jìn)行判斷粪滤,再根據(jù)判斷結(jié)果來決定執(zhí)行哪一段代碼
3)循環(huán)結(jié)構(gòu):在給定條件成立的情況下斧拍,反復(fù)執(zhí)行某一段代碼

2.1 if

定義:
如果表達(dá)式為真,執(zhí)行語(yǔ)句塊1杖小,否則執(zhí)行語(yǔ)句塊2
格式:

if(條件表達(dá)式)  {
  語(yǔ)句塊1
}
else  {
  語(yǔ)句塊2
}

如果條件表達(dá)式1為真肆汹,則執(zhí)行語(yǔ)句塊1,否則判斷條件表達(dá)式2予权,如果為真執(zhí)行語(yǔ)句塊2昂勉,否則再判斷條件表達(dá)式3,如果真執(zhí)行語(yǔ)句塊3扫腺,當(dāng)表達(dá)式123都不滿足岗照,會(huì)執(zhí)行最后一個(gè)else語(yǔ)句

var age=35;
if(age>40) {
    console.log('老年人');
}else if(age>20){
    console.log('中年人')
}else if(age>12){
    console.log('成年人');
}else {
    console.log('未成年人');
}

注意點(diǎn):
1)如果只有一條語(yǔ)句時(shí),if后面的大括號(hào)可以省略(不建議省略)
2)分號(hào)“笆环;”也是一條語(yǔ)句攒至,空語(yǔ)句

if(1>0);  //if已經(jīng)結(jié)束,后面的不再屬于if
{
語(yǔ)句塊1
}

3)if else是一個(gè)整體躁劣,else匹配if的時(shí)候匹配離他最近的一個(gè)if
4)對(duì)于非Boolean類型的值迫吐,會(huì)先轉(zhuǎn)換為Boolean類型后再判斷
5)判斷變量與字面量的問題
但凡遇到比較一個(gè)變量等于或者不等于某一個(gè)字面量的時(shí)候,把字面量寫在前面
本來是先判斷變量a儲(chǔ)存的值是否等于0账忘,
但是如果不小心寫成了a=0志膀,代表把0儲(chǔ)存到a中(賦值)
為了避免這種問題熙宇,判斷是否相等時(shí)把字面量寫在前面
因?yàn)榈忍?hào)左邊只能是變量,所以如果少些一個(gè)等號(hào)會(huì)報(bào)錯(cuò)

6)if語(yǔ)句可以嵌套使用

var num=20;
if(num>=10 {
    if(num<=30)  {
        console.log('滿足條件溉浙!')烫止;
    }
}

2.2 Switch

Switch和if一樣都屬于選擇結(jié)構(gòu),都會(huì)對(duì)給定的條件進(jìn)行判斷戳稽,再根據(jù)判斷結(jié)果來決定執(zhí)行哪一段代碼
基本格式:

switch(條件表達(dá)式) {
    case 表達(dá)式:
        語(yǔ)句1馆蠕;
        break;
    case 表達(dá)式:
        語(yǔ)句2广鳍;
        break荆几;
    case 表達(dá)式n:
        語(yǔ)句n;
        break赊时;
    default:
        語(yǔ)句n+1;
        break吨铸;
}

含義:
1)計(jì)算條件表達(dá)式的值。并逐個(gè)與case后面表達(dá)式的結(jié)果值比較
2)當(dāng)條件表達(dá)式的值與某個(gè)表達(dá)式的值全等時(shí)祖秒,執(zhí)行其后的語(yǔ)句诞吱,并且不會(huì)再與其他 case進(jìn)行比較
3)如果條件表達(dá)式的值與所有的case后的表達(dá)式均不相同時(shí),則執(zhí)行default后的語(yǔ)句
示例:

var num=3;
switch(num) {
    case 1 :
        console.log('壹');
        break;
    case 2 :
        console.log('貳');
        break;
    case 3 :
        console.log('叁');    //輸出“叁”
        break;
      default:
        console.log('其他');
        break;
}

注意事項(xiàng):
1)case全等與問題:
JavaScript中case判斷是否相等時(shí)是全等于(===)竭缝,而不是等于(==)房维,也就是說即會(huì)判斷類型是否相等又會(huì)判斷值是否相等
case后可以是字面量也可以是變量
2)表達(dá)式判斷問題:判斷時(shí)會(huì)先計(jì)算表達(dá)式的值,再判斷
3)case的穿透問題:switch里面的case只要匹配一次其他的都會(huì)失效抬纸,包括default
case語(yǔ)句最后增加的break語(yǔ)句咙俩,使每一次執(zhí)行之后均可跳出switch語(yǔ)句,從而避免輸出不應(yīng)有的結(jié)果
4)default的位置問題:
default可以省略
default語(yǔ)句可以寫在switch語(yǔ)句中的任意位置

案例:

//根據(jù)輸入成績(jī)判斷等級(jí)
var num=window.prompt('請(qǐng)輸入您的分?jǐn)?shù):');
switch(num= parseInt(num/10)) {
    case 10 :
    case 9 :
        console.log('A');
        break;
    case 8 :
        console.log('B');
        break;
    case 7 :
        console.log('C');
        break;
    case 6 :
        console.log('D');
        break;
    default :
        console.log('E');
        break;
}

if語(yǔ)句和switch語(yǔ)句的選擇:
1)分支比較多且無窮盡時(shí)最好用if湿故,其他情況可以視情況而定
2)如果數(shù)據(jù)量不是很大阿趁,并且數(shù)據(jù)是固定的可以用switch
3)理論上switch的效率比if高
4)switch的弊端
判斷用戶輸入的數(shù)是否大于100
if很容易,switch很麻煩

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末坛猪,一起剝皮案震驚了整個(gè)濱河市脖阵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌墅茉,老刑警劉巖命黔,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異就斤,居然都是意外死亡悍募,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門战转,熙熙樓的掌柜王于貴愁眉苦臉地迎上來搜立,“玉大人,你說我怎么就攤上這事槐秧∽挠唬” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵刁标,是天一觀的道長(zhǎng)颠通。 經(jīng)常有香客問我,道長(zhǎng)膀懈,這世上最難降的妖魔是什么顿锰? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮启搂,結(jié)果婚禮上硼控,老公的妹妹穿的比我還像新娘。我一直安慰自己胳赌,他們只是感情好牢撼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著疑苫,像睡著了一般熏版。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捍掺,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天撼短,我揣著相機(jī)與錄音,去河邊找鬼挺勿。 笑死曲横,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的不瓶。 我是一名探鬼主播禾嫉,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼湃番!你這毒婦竟也來了夭织?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤吠撮,失蹤者是張志新(化名)和其女友劉穎尊惰,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泥兰,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡弄屡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鞋诗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膀捷。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖削彬,靈堂內(nèi)的尸體忽然破棺而出全庸,到底是詐尸還是另有隱情秀仲,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布壶笼,位于F島的核電站神僵,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏覆劈。R本人自食惡果不足惜保礼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望责语。 院中可真熱鬧炮障,春花似錦、人聲如沸坤候。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)铐拐。三九已至徘键,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間遍蟋,已是汗流浹背吹害。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留虚青,地道東北人它呀。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像棒厘,于是被迫代替她去往敵國(guó)和親纵穿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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

  • 順序結(jié)構(gòu):按書寫順序從上至下依次執(zhí)行 選擇結(jié)構(gòu)對(duì)給定的條件進(jìn)行判斷奢人,再根據(jù)判斷結(jié)果來決定執(zhí)行代碼 循環(huán)結(jié)構(gòu)在給定條...
    Cc_5691閱讀 471評(píng)論 0 0
  • java的流程控制語(yǔ)句包含條件語(yǔ)句和循環(huán)語(yǔ)句 一.什么是流程控制語(yǔ)句何乎? ·流程控制語(yǔ)句:可以控制程序的執(zhí)行流程句惯。 ...
    全棧攻城獅DWQ閱讀 10,975評(píng)論 0 1
  • JS中的程序是從上到下一行一行執(zhí)行的 通過流程控制語(yǔ)句可以控制程序執(zhí)行流程,使程序可以根據(jù)一定的條件來選擇執(zhí)行 語(yǔ)...
    牛耀閱讀 414評(píng)論 0 0
  • 一.分支結(jié)構(gòu) 1.if語(yǔ)句 if語(yǔ)句會(huì)與其后的第一條語(yǔ)句或代碼塊結(jié)合支救,且只有當(dāng)判斷條件為true時(shí)才執(zhí)行語(yǔ)句或代碼...
    游戲原畫設(shè)計(jì)閱讀 378評(píng)論 0 0
  • 今天我和媽媽又玩了賣東西的游戲抢野,名字叫我是小老板,游戲規(guī)則是有一個(gè)人來當(dāng)老板另一個(gè)人當(dāng)顧客來買商品各墨。我和我...
    碎片幻影閱讀 504評(píng)論 0 0