13_JavaScript基礎(chǔ)入門(3)

條件分支語句

條件分支語句刻恭,也叫作條件判斷語句晚顷,就是根據(jù)某種條件執(zhí)行某些語句家凯,不執(zhí)行某些語句。
JS中有三種語法是可以表示條件分支的署鸡。

1.if……else……

條件分支的主力語法案糙,這個主力語法能夠書寫所有的條件分支語句。也就是說靴庆,一會兒我們學(xué)switch case語句时捌,switch case語句能干的,if else語句一定也能干炉抒。
昨天已經(jīng)講過了奢讨,復(fù)習(xí)一下:
標(biāo)準(zhǔn)的完整結(jié)構(gòu):

if(){

}else if(){

}else if(){

}else{

}

else只能有一個,并且一定要放在最后焰薄。表示所有的分支都不滿足的時候執(zhí)行的事情拿诸。
可以沒有else:

if(){
    
}else if(){
    
}else if(){
}
可以沒有分支:
if(){

}

看準(zhǔn)樓的位置:

if(8 > 5){
    console.log("哈哈");
}
console.log("嘻嘻");   //這行語句不在if里,所以不管if成功沒有塞茅,都執(zhí)行

如果只有一行語句亩码,那么就可以省略大括號:

if(8 > 15)
    console.log("哈哈");
console.log("嘻嘻");

跳樓現(xiàn)象,要會合理利用野瘦,比如今天早上的bmi晨早測驗描沟!

var a = 4;
if(a < 8){
    a++;    //a變?yōu)?,然后跳樓,不會進行下面的a==5的比較了
}else if(a == 5){
    a++;
}
console.log(a);  //5

2.switch case語句

先來看一個簡單的例子:

switch(xingzuo){
    case "白羊座" :
        alert("今天要注意調(diào)整自己的狀態(tài)吏廉,有些人的睡眠質(zhì)量比較差");
        break;
    case "金牛座" :
        alert("今天會在感情方面遇到一些小小的問題");
        break;
    case "雙子座" :
        alert("要做好心理準(zhǔn)備會在工作上被他人挑剔找茬蠢络,這是你避免不了的事情");
        break;
    case "巨蟹座":
        alert("工作上要打醒十二分精神,要不然很大可能會經(jīng)常要返工哦");
        break;
    case "獅子座":
        alert("戀愛中的人今天的心有點搖擺不定迟蜜,有人可能會有精神上的出軌");
        break;
    default :
        alert("對不起刹孔,我們沒有收錄你的星座運勢!");
        break;
}

語法:

switch(待檢測值){
    case 值1 :
        值1 與 待檢測值 相同時做的事情
        break;
    case 值2 :
        值2 與 待檢測值 相同時做的事情
        break;
    case 值3 :
        值3 與 待檢測值 相同時做的事情
        break;
    default :
        默認要做的
        break;
}

switch case語句的哲學(xué)是什么娜睛?存在的意義髓霞,簡化了if……else……的書寫:

你會發(fā)現(xiàn),下面的if語句的分支中畦戒,都是在判斷xingzuo是不是和某一個字符串相等方库,顯得臃腫:

if(xingzuo == "白羊座"){
    alert("今天要注意調(diào)整自己的狀態(tài),有些人的睡眠質(zhì)量比較差");
}else if(xingzuo == "金牛座"){
    alert("今天會在感情方面遇到一些小小的問題");
}else if(xingzuo == "雙子座"){
    alert("要做好心理準(zhǔn)備會在工作上被他人挑剔找茬障斋,這是你避免不了的事情");
}else if(xingzuo == "巨蟹座"){
    alert("工作上要打醒十二分精神纵潦,要不然很大可能會經(jīng)常要返工哦");
}else if(xingzuo == "獅子座"){
    alert("戀愛中的人今天的心有點搖擺不定,有人可能會有精神上的出軌");
}else{
    alert("對不起垃环,我們沒有收錄你的星座運勢邀层!");
}

我們經(jīng)過測試,發(fā)現(xiàn)switch進行相同判斷遂庄,底層是===的比較寥院,連類型一起比較

<script type="text/javascript">
    var a = "5";
    switch(a){
        case 5 :
            alert("哈哈");  //不會彈出!涛目!因為類型不一樣
            break;
    }
</script>

如果不寫break秸谢,那么switch語句就表現(xiàn)的非要有意思,除了執(zhí)行這個case里面的語句之外霹肝,還將無條件的執(zhí)行下面的case的語句估蹄,直到遇見一個break攔住它。

var a = 5;
switch(a){
    case 4:
        alert("我是4");   //沒有通過驗證沫换,不執(zhí)行
    case 5:
        alert("我是5");   //彈出
    case 6:                //無視這行case臭蚁,直接直接這行case里面的語句
        alert("我是6");   //彈出, 
        break;             //擋住了苗沧,就不能繼續(xù)往下運行了
    case 7:
        alert("我是7");
        break;
    default:
        alert("我是默認");
}

//用戶輸入月份刊棕,告訴它這個月有幾天

switch(month){
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        alert("這個月有31天");
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        alert("這個月有30天");
        break;
    case 2:
        alert("這個月一般來說是28天,可能29天");
}

初學(xué)者最最可愛的錯誤是:

switch(month){
    case 1 || 3 || 5 || 7 || 8 || 10 || 12 :
        alert("這個月有31天");
        break;
    case 4 || 6 || 9 || 11 :
        alert("這個月有30天");
        break;
    default :
        alert("我是默認");
}

這樣寫不行的待逞!因為1 || 3 || 5 || 7叫做表達式甥角,計算機一遇見表達式,就會計算求值
1 || 3 || 5 || 7 || 8 || 10 || 12

表達式的值是1识樱,等價于case 1:

switch這個語句嗤无,就只能干這種事兒震束。就是把一個值,看情況得幾当犯,執(zhí)行不同的事兒垢村。
如果要在某一個范圍內(nèi),做某件事兒嚎卫,也行嘉栓,不過不建議這么寫。此時應(yīng)該用if……else if……

switch(true){
    case score < 60 :
        alert("不及格");
        break;
    case score < 75 :
        alert("及格");
        break;
    case score < 85 :
        alert("良好");
        break;
    case score <= 100 :
        alert("優(yōu)秀");
        break;
    default :
        alert("你輸入的成績錯誤");
}

3.三元運算符

? :是一組運算符拓诸,這是JS中唯一一個需要三個元素參加的運算符侵佃。

條件 ? val1 : val2
表達式的值,要看條件是true還是false奠支。如果條件是true馋辈,那么表達式的值就是val1。如果條件是false倍谜,表達式的值就是val2迈螟。

簡單的例子:

console.log(true ? 3 : 8);  //3
console.log(false ? 3 : 8); //8

三元運算符,經(jīng)常這么使用:
員工的年終獎倍數(shù)尔崔,跟月薪有關(guān)答毫。月薪大于8000,系數(shù)就是1.2您旁。否則是1烙常。
var xishu = salary > 8000 ? 1.2 : 1;
等價于:

if(salary > 8000){
    xishu = 1.2;
}else{
    xishu = 1;5 }

現(xiàn)在總結(jié)一下,條件分支的語句一共有3種鹤盒,但是&& ||短路寫法也有一種選擇的感覺,總共算4種侦副。
if……else if…… (必須立即想到侦锯!這個東西無敵)
switch case (某一方面很擅長,體現(xiàn)在了代碼的清晰度上)
三元運算符 (賦值的時候秦驯,根據(jù)條件有兩個可能的值尺碰,馬上想到三元運算符)
&&短路寫法 (經(jīng)驗問題,用的不熟悉沒事)

循環(huán)語句

JS中流程控制的語句译隘,就兩個:條件分支亲桥、循環(huán)語句」淘牛靠這兩種語句题篷,就能完成所有的程序。
循環(huán)語句是一系列反復(fù)執(zhí)行直到符合特定條件的命令厅目。
循環(huán)語句能夠解決大量的類似語句書寫番枚。

1.for循環(huán)語句

整體感知:

for(var i = 1 ; i <= 99 ; i++){
    console.log("第" + i + "次說我愛你"); 
}

你就發(fā)現(xiàn)了法严,for循環(huán)就是一個殼子,讓變量i依次葫笼、輪流的值為1深啤、2、3路星、4溯街、……99。
變量i我們稱為循環(huán)變量洋丐,這個變量可以任意設(shè)置呈昔,我們習(xí)慣用i來表示循環(huán)變量
語法上,最最容易錯誤的垫挨,最后沒有分號:
for(var i = 1 ; i <= 99 ; i++;){ ← 錯誤的寫法
console.log("第" + i + "次說我愛你"); 3 }

for循環(huán)的本質(zhì)韩肝,必須搞清楚。


for的本質(zhì)

系統(tǒng)遇見了for循環(huán)結(jié)構(gòu)九榔,會立即執(zhí)行語句①哀峻,此時聲明了一個變量i,賦值為1哲泊。

系統(tǒng)會立即檢測剩蟀,是否滿足②這個條件表達式,如果是真切威,則執(zhí)行③育特;如果②是假,則跳出循環(huán)先朦,執(zhí)行語句⑤缰冤。

執(zhí)行完③之后,系統(tǒng)會立即執(zhí)行語句④喳魏,然后再次檢測語句②棉浸,如果為真,則做③刺彩,如果為假迷郑,則做⑤;

執(zhí)行完③之后创倔,系統(tǒng)會立即執(zhí)行語句④嗡害,……

2.窮舉思想

我們初學(xué)者,最最關(guān)鍵的畦攘,就是掌握for循環(huán)的窮舉思想霸妹。
比如,現(xiàn)在要尋找48的所有約數(shù)念搬。
什么是約數(shù): a ÷ b 沒有余數(shù)抑堡,能整除摆出。那么我們稱a是b的倍數(shù),稱b是a的約數(shù)首妖。
計算機是笨笨的偎漫,不能立即告訴你48能整除哪些數(shù),所以有缆,我們就要讓計算機從1開始象踊,一個一個實驗。
我們試試1是不是48的約數(shù)
我們試試2是不是48的約數(shù)
我們試試3是不是48的約數(shù)
……
我們試試48是不是48的約數(shù)

把所有的可能性一一列出棚壁,然后篩選杯矩。全舉法,舉就是列舉的意思袖外。中文比較文縐縐史隆,窮舉法。
欲窮千里目曼验,更上一層樓泌射。

比如,我們現(xiàn)在要尋找水仙花數(shù)鬓照。水仙花數(shù)熔酷,是三位數(shù),每個數(shù)位的立方和等于它本身豺裆。
比如153拒秘, 因為13+53+33 = 1 + 125 + 27 = 153。所以153就是水仙花數(shù)臭猜。
尋找100~999的所有水仙花數(shù)躺酒。
窮舉法,從100~999蔑歌,一個一個試阴颖,
我們試試100是不是水仙花數(shù)
我們試試101是不是水仙花數(shù)
我們試試102是不是水仙花數(shù)
我們試試103是不是水仙花數(shù)
……
我們試試999是不是水仙花數(shù)

for循環(huán),還有一個小應(yīng)用丐膝,叫做累加器。
比如钾菊,我們現(xiàn)在想計算1+2+3+4+……100

var sum = 0;  //累加器
for(var i = 1 ; i <= 100 ; i++){
    sum = sum + i;
}
console.log(sum);

計算6帅矗!

var sum = 1;   //累乘器,累乘器的初值是1
for(var i = 6 ; i >= 1 ; i--){
    sum = sum * i;
}
console.log(sum);

如果一個數(shù)恰好等于它的因數(shù)之和煞烫,則稱該數(shù)為“完美數(shù)”浑此。
例如:
第1個完全數(shù)是6,它有因數(shù)1滞详、2凛俱、3紊馏、6,除去它本身6外蒲犬,其余3個數(shù)相加朱监,1+2+3=6。第2個完全數(shù)是28原叮,它有因數(shù)1赫编、2、4奋隶、7擂送、14、28唯欣,除去它本身28外嘹吨,其余5個數(shù)相加,1+2+4+7+14=28境氢。
試尋找1~10000之間的所有完美數(shù)蟀拷。

for(var i = 1 ; i <= 10000 ; i++){
    var sum = 0;
for(var j = 1 ; j <= i ; j++){
    if(i % j == 0 && i != j){
        sum+=j;
    }
}
if(i==sum){
        console.log("完美!"+i);
    }


}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末匹厘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子愈诚,更是在濱河造成了極大的恐慌牛隅,老刑警劉巖炕柔,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異媒佣,居然都是意外死亡,警方通過查閱死者的電腦和手機默伍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來也糊,“玉大人炼蹦,你說我怎么就攤上這事±晏辏” “怎么了掐隐?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵钞馁,是天一觀的道長匿刮。 經(jīng)常有香客問我探颈,道長,這世上最難降的妖魔是什么膝擂? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮狞山,結(jié)果婚禮上叉寂,老公的妹妹穿的比我還像新娘。我一直安慰自己屏鳍,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布驳遵。 她就那樣靜靜地躺著山涡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鸭丛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天瘾带,我揣著相機與錄音熟菲,去河邊找鬼看政。 笑死,一個胖子當(dāng)著我的面吹牛帽衙,可吹牛的內(nèi)容都是我干的贞绵。 我是一名探鬼主播,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼榨崩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了翩剪?” 一聲冷哼從身側(cè)響起彩郊,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎秫逝,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浙巫,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡刷后,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了丧裁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片含衔。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖逊桦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情强经,我是刑警寧澤寺渗,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站信殊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏玲躯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一棘利、第九天 我趴在偏房一處隱蔽的房頂上張望朽缴。 院中可真熱鬧善玫,春花似錦密强、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至距芬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間框仔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工银舱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留跛梗,地道東北人。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓诚欠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親轰绵。 傳聞我的和親對象是個殘疾皇子尼荆,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,876評論 2 361

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

  • Swift 提供了類似 C 語言的流程控制結(jié)構(gòu),包括可以多次執(zhí)行任務(wù)的for和while循環(huán)液样,基于特定條件選擇執(zhí)行...
    窮人家的孩紙閱讀 706評論 1 1
  • [The Swift Programming Language 中文版]本頁包含內(nèi)容: Swift提供了多種流程控...
    風(fēng)林山火閱讀 573評論 0 0
  • Swift提供了多種控制流聲明。包括while循環(huán)來多次執(zhí)行一個任務(wù)双炕;if撮抓,guard和switch聲明來根據(jù)確定...
    BoomLee閱讀 1,958評論 0 3
  • 控制流 [TOC] Swift提供了多種流程控制結(jié)構(gòu)摇锋,包括可以多次執(zhí)行任務(wù)的while循環(huán),基于特定條件選擇執(zhí)行不...
    伍哥___閱讀 514評論 0 0
  • 《道德經(jīng)》者县昂,中國古典文化之不可不讀之寶典陷舅! “蓋詩詞書畫聯(lián)園林建筑等諸事莫之能逾倒彰。心有癘氣者莱睁,瘋狂之極者讀之待時...
    美意enjoy閱讀 573評論 0 0