4闻蛀、流程控制-判斷和循環(huán)

流程控制:

  • 計(jì)算機(jī)處理代碼的執(zhí)行過(guò)程宰僧,默認(rèn)按照自上而下的順序讀取
  • 某些情況下材彪,我們是需要更改這些讀取順序。

if判斷:

  • 格式1:
    if(條件) 內(nèi)容 當(dāng)條件為真時(shí),輸出執(zhí)行的內(nèi)容
  • 格式2:
    if(條件){ 當(dāng)條件為真時(shí)查刻,輸出執(zhí)行的內(nèi)容 }
    區(qū)別: 不加花括號(hào)的只能影響到緊跟在條件后的第一條語(yǔ)句键兜,而加了花括號(hào)則可以控制花括號(hào)內(nèi)的所有語(yǔ)句
  • 格式3:
    if(條件){
         條件為真時(shí),執(zhí)行的代碼
    }else{
         條件為假時(shí)穗泵,執(zhí)行的代碼
    }

如果...否則...

  • 格式4:
  if(){
  //當(dāng)條件為真時(shí)普气,執(zhí)行代碼否則往下判斷
  }else if(){
  //當(dāng)else if的條件為真時(shí),執(zhí)行代碼佃延,否則往下判斷
  }else if(){
  //當(dāng)else if的條件為真時(shí)现诀,執(zhí)行代碼,否則往下判斷
  }else{
  //當(dāng)所有條件都為假履肃,執(zhí)行代碼
  };

如果...否則如果...否則如果...否則...

巢狀分支:
巢狀分支也叫if嵌套仔沿,if語(yǔ)句允許在其中繼續(xù)嵌套if語(yǔ)句或者其他代碼
    if(){
    //外層if循環(huán)語(yǔ)句
       if(){
            //內(nèi)層嵌套的語(yǔ)句
       }
    }
注意:if語(yǔ)句的判斷條件很靈活,只要是能夠輸出Boolean的數(shù)據(jù)都可以當(dāng)成條件

switch分支語(yǔ)句:

 switch(n){
      case 1:
        執(zhí)行代碼塊 1
        break;
      case 2:
        執(zhí)行代碼塊 2
        break;
      default:
        n 與 case 1 和 case 2 不同時(shí)執(zhí)行的代碼
  }

工作原理: 首先設(shè)置表達(dá)式 n(通常是一個(gè)變量)尺棋。隨后表達(dá)式的值會(huì)與結(jié)構(gòu)中的每個(gè) case 的值做比較封锉。如果存在匹配,則與該 case 關(guān)聯(lián)的代碼塊會(huì)被執(zhí)行膘螟。
注意: 就算n與一個(gè)case的值匹配成功成福,也不會(huì)停止,而是會(huì)繼續(xù)向下匹配荆残,有時(shí)候我們并不需要它再做多余的匹配党觅,所以我們可以用 break 語(yǔ)句來(lái)阻止代碼繼續(xù)運(yùn)行蛉鹿,

break:終止符匾,可以終止代碼執(zhí)行净薛。

三目運(yùn)算:

說(shuō)到判斷,在js里面還有一個(gè)簡(jiǎn)單的判斷方法不得不提,那就是三目運(yùn)算,又被稱為三元運(yùn)算:
條件? 語(yǔ)句一 : 語(yǔ)句二;
這就是三目運(yùn)算的結(jié)構(gòu),先寫判斷條件,條件后面跟著一個(gè)問(wèn)號(hào),再往后是兩個(gè)輸出語(yǔ)句,用冒號(hào)隔開,
如果條件為真俘闯,則輸出語(yǔ)句一潭苞、為假則輸出語(yǔ)句二
注意: 三目運(yùn)算的輸出結(jié)果會(huì)返回給它本身,所以你可以用一個(gè)變量來(lái)接收這個(gè)語(yǔ)句备徐,則可以直接用它來(lái)使用輸出比如:

//比較兩個(gè)數(shù)的大小并把大的數(shù)輸出
var i=10,j=20;
//第一種方法:
var max = i>j ? i : j;
console.log(max);
//第二種方法:
console.log(i>j ? i : j;);

三目運(yùn)算還可以嵌套三目運(yùn)算,如下例:

//判斷三個(gè)數(shù)誰(shuí)最大
var i = 10,j = 20,x = 30;
var max = i>j ? i>x ? i : x : j>x ? j : x ;
//是不是看著頭暈?zāi)垦5?這就是嵌套的一個(gè)不好的地方,不容易使人看懂,我們可以修改一下
max =  i>j ?(i>x ? i : x) : (j>x ? j : x) ;
//這樣看著是不是就好看多了?還可以這樣:
max =  i>j ?
    i>x ? i : x :
    j>x ? j : x ;
//js可以忽略掉多余的空格和換行,所以將你的代碼寫的更整潔漂亮吧
console.log(max);

注意: JS中所有的符號(hào)都必須用英文符號(hào),否則會(huì)報(bào)錯(cuò),

循環(huán)語(yǔ)句:

當(dāng)我們需要做某些大量的萄传、重復(fù)的,或者是重復(fù)但是值不同的蜜猾,這個(gè)時(shí)候如果使用循環(huán)就會(huì)很方便了

1秀菱、For循環(huán)

for (語(yǔ)句 1; 語(yǔ)句 2; 語(yǔ)句 3){
  //被執(zhí)行的代碼塊
  }

語(yǔ)句1:定義循環(huán)的變量,在循環(huán)(代碼塊)開始前執(zhí)行
通常我們會(huì)使用語(yǔ)句 1 初始化循環(huán)中所用的變量 (var i=0)蹭睡。

語(yǔ)句2:定義運(yùn)行循環(huán)(代碼塊)的條件
通常語(yǔ)句 2 用于評(píng)估初始變量的條件衍菱。

語(yǔ)句3:定義跳出循環(huán)的值,在循環(huán)(代碼塊)已被執(zhí)行之后執(zhí)行
通常語(yǔ)句 3 會(huì)增加初始變量的值肩豁,如遞增或遞減脊串。

for (var i=0; i<5; i++){
  alert(i);
  }

注意: 三個(gè)語(yǔ)句都可以忽略并寫在其他地方辫呻,但是括號(hào)里必須有兩個(gè);,如:

var i = 0;
for(;;){
    alert(i);
    i++;
    if(i>=5){
        break;
        //break,當(dāng)i>=5時(shí)終止循環(huán)
        }
}

注意: 語(yǔ)句1可以寫在for循環(huán)外邊或里面琼锋,但是時(shí)變量i改變的語(yǔ)句3必須寫在for循環(huán)的內(nèi)部放闺,如果忽略掉語(yǔ)句2,則必須在循環(huán)內(nèi)部設(shè)置break來(lái)跳出循環(huán)缕坎,否則for循環(huán)會(huì)成為死循環(huán)怖侦,無(wú)法停止可能會(huì)使瀏覽器崩潰。

For/In循環(huán):

for/in語(yǔ)句可以循環(huán)遍歷對(duì)象的屬性:

var a,b;
var person = {name:"名字",age:18,}
for (a in person){
    b =b + a;
}
alert(b);//得到的結(jié)果會(huì)是:名字18

for/in循環(huán)會(huì)依次遍歷對(duì)象中的屬性谜叹,并將每次得到的屬性賦值給a匾寝。
什么是對(duì)象?這個(gè)問(wèn)題會(huì)在后面的筆記中講到荷腊。

While循環(huán)和Do/While循環(huán):

while循環(huán):

while循環(huán)會(huì)在指定條件為真時(shí)循環(huán)執(zhí)行代碼塊

while (條件){
  需要執(zhí)行的代碼
  }
如:
var i = 1;
while(i<10){
    console.log(i);
    i++;
}

注意: while循環(huán)和for(;;)循環(huán)類似艳悔,也能夠執(zhí)行相同的任務(wù),所以注意女仰,一定要在循環(huán)里設(shè)置可以使循環(huán)終止的代碼猜年,如上面的i++,否則會(huì)陷入死循環(huán),可能會(huì)導(dǎo)致瀏覽器崩潰董栽。

do/while循環(huán):

do/while 循環(huán)是 while 循環(huán)的變體码倦。該循環(huán)會(huì)在檢查條件是否為真之前執(zhí)行一次代碼塊,然后如果條件為真的話锭碳,就會(huì)重復(fù)這個(gè)循環(huán),所以勿璃,do/while循環(huán)至少可以執(zhí)行一次擒抛。

do{
  需要執(zhí)行的代碼
  }while (條件);
  
  var i = 0;
  do{
  console.log(i);
  i++;
  }while(i>=5);

do/while循環(huán)至少執(zhí)行一次,上面的代碼补疑,至少可以輸出一次i歧沪,

跳出循環(huán)-break和continue語(yǔ)句:

上面已經(jīng)介紹過(guò)break語(yǔ)句,現(xiàn)在我們來(lái)好好說(shuō)一下它、還有一個(gè)類似的語(yǔ)句:continue
continue同樣具有跳出的意思莲组,但和break不同的是:

  • break跳出整個(gè)循環(huán)诊胞,即循環(huán)代碼執(zhí)行到break就會(huì)中斷,不在向下執(zhí)行锹杈,即使下面還有未執(zhí)行的代碼
  • continue跳出這一次循環(huán)撵孤,即循環(huán)代碼碰到continue就會(huì)跳過(guò)這一次的循環(huán),但是下面的代碼繼續(xù)執(zhí)行竭望,如果有的話
    我們用下面的代碼演示一下:
 //使用break來(lái)跳出循環(huán)
 for(var i=0;i<10;i++){
 //我們了一個(gè)自增的數(shù)字,現(xiàn)在讓我們用它來(lái)輸出1邪码、2、3~~9
 if(i==3){
 break;
 }
 console.log(i);
 };
 //使用continue來(lái)跳出循環(huán)
 for(var i=0;i<10;i++){
 //我們了一個(gè)自增的數(shù)字,現(xiàn)在讓我們用它來(lái)輸出1咬清、2闭专、3~~9
 if(i==3){
 continue;
 }
 console.log(i);
 }

運(yùn)行一下試試看,可以看到添加break語(yǔ)句的循環(huán)輸出的是0奴潘、1、2影钉,break之后的循環(huán)都不在執(zhí)行
而添加continue語(yǔ)句的循環(huán)輸出的是0画髓、1、2平委、4雀扶、5、6肆汹、7愚墓、8、9昂勉,只有執(zhí)行了continue語(yǔ)句的3被跳過(guò)

for和whiled的比較:

for:

var i =0;
for(;i<5;){
alert(i);
i++
};

while:

var i = 0;
while(i<5){
alert(i);
i++
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末浪册,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子岗照,更是在濱河造成了極大的恐慌村象,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件攒至,死亡現(xiàn)場(chǎng)離奇詭異厚者,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)迫吐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門库菲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人志膀,你說(shuō)我怎么就攤上這事熙宇。” “怎么了溉浙?”我有些...
    開封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵烫止,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我戳稽,道長(zhǎng)馆蠕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任惊奇,我火速辦了婚禮互躬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赊时。我一直安慰自己吨铸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開白布祖秒。 她就那樣靜靜地躺著诞吱,像睡著了一般舟奠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上房维,一...
    開封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天沼瘫,我揣著相機(jī)與錄音,去河邊找鬼咙俩。 笑死耿戚,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的阿趁。 我是一名探鬼主播膜蛔,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼脖阵!你這毒婦竟也來(lái)了皂股?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤命黔,失蹤者是張志新(化名)和其女友劉穎呜呐,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體悍募,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蘑辑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了坠宴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洋魂。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖啄踊,靈堂內(nèi)的尸體忽然破棺而出忧设,到底是詐尸還是另有隱情,我是刑警寧澤颠通,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站膀懈,受9級(jí)特大地震影響顿锰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜启搂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一硼控、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧胳赌,春花似錦牢撼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)纷责。三九已至,卻和暖如春撼短,著一層夾襖步出監(jiān)牢的瞬間再膳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工曲横, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留喂柒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓禾嫉,卻偏偏與公主長(zhǎng)得像灾杰,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子熙参,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

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

  • Swift 提供了類似 C 語(yǔ)言的流程控制結(jié)構(gòu)艳吠,包括可以多次執(zhí)行任務(wù)的for和while循環(huán),基于特定條件選擇執(zhí)行...
    窮人家的孩紙閱讀 706評(píng)論 1 1
  • 在C語(yǔ)言中,五種基本數(shù)據(jù)類型存儲(chǔ)空間長(zhǎng)度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來(lái)閱讀 3,352評(píng)論 0 2
  • Swift提供了多種控制流聲明尊惰。包括while循環(huán)來(lái)多次執(zhí)行一個(gè)任務(wù)讲竿;if,guard和switch聲明來(lái)根據(jù)確定...
    BoomLee閱讀 1,958評(píng)論 0 3
  • [The Swift Programming Language 中文版]本頁(yè)包含內(nèi)容: Swift提供了多種流程控...
    風(fēng)林山火閱讀 571評(píng)論 0 0
  • 控制流 [TOC] Swift提供了多種流程控制結(jié)構(gòu)弄屡,包括可以多次執(zhí)行任務(wù)的while循環(huán)题禀,基于特定條件選擇執(zhí)行不...
    伍哥___閱讀 514評(píng)論 0 0