javascript第三天學習
阿新 • • 發佈:2018-12-25
三、條件分支語句
1、三元運算子
他是唯一一個需要三個元素參與的運算。
也叫作三元表示式。
符號:? :
語法:boolean_expression ? true_value : false_value;
表示:前面的布林表示式的值只有true和false兩種,如果為true,運算結果就是冒號前面的true_value,如果是false,運算結果就是冒號後面的false_value。
表示式:在js裡面如果出現表示式,在參與程式碼執行時,會先計算出結果。
var a = 23;
console.log(true ? 1 : 0);
console.log( false ? 1 : 0);
console.log(7 > 8 ? 1 : 0);
console.log(a > 0 ? 1 : 0);
console.log("nihao" ? 1 : 0);
console.log("" > 0 ? 1 : 0);
三元運算子的結果都可以用if語句模仿。
//用if語句模擬三元運算子
var a = 23;
if(a > 0) {
console.log(1);
} else {
console.log(0);
}
簡單的二選一得到值的程式裡,三元運算子比if語句要更加簡單。而且,三元運算子會直接計算出一個值,可以賦值給變數。
var a = 7 > 8 ? 1 : 0; console.log(a);
遇到給變數通過條件二選一賦值的時候,三元表示式更加好用。
//輸入工作年限、工資、輸出年終獎
var year = parseInt(prompt("請輸入你的工作年限,不滿一年輸入0"));
var salary = parseInt(prompt("請輸入你的月工資"));
//工作滿0年 發月薪的1倍月薪年終獎,如果月薪大於8000,那麼就是發1.2倍
//工作滿1年 發月薪的1.5倍月薪年終獎,如果月薪大於10000,那麼就是發1.7倍
//工作滿2年,甚至更多 發月薪的3倍月薪年終獎,如果月薪大於12000,那麼就是發3.2倍
var bonus = 0; //裡面要放數字型別
var beishu;
if(year == 0) {
//發月薪的1倍月薪年終獎,如果月薪大於8000,那麼就是發1.2倍
beishu = salary > 8000 ?1.2 : 1;
}else if(year == 1) {
beishu =salary > 10000 ? 1.7 : 1.5;
}else {
beishu = salary > 12000 ? 3.2 : 3;
}
bonus = salary * beishu;
alert("您的年終獎是"+bonus+"元");
拓展:邏輯運算子也有選擇的功能。
var year = parseInt(prompt("請輸入你的工作年限,不滿一年輸入0")) || 0;
2、switch語句
開關語句允許一個程式求一個表示式的值,並且嘗試去匹配表示式的值到一個case標籤。如果匹配成功,這個程式執行相關的語句。
比較if語句和switch語句:
if語句:
//請使用者輸入一個星座,輸出對應的星座運勢
var xingzuo = prompt("請輸入一個星座","白羊座");
//通過匹配對應的星座輸出星座運勢
if(xingzuo == "白羊座") {
alert("需要出外辦事的次數多,與人交流順暢融洽,這也是你拓展人脈的機會。但是天氣炎熱要注意防暑。");
}else if(xingzuo == "金牛座") {
alert("實力被壓制總不能得到施展,讓你大受打擊,自信心下滑。若是今天要簽約、談判,務必要仔細看清楚條款" +
",以免被陷害了。");
}else if(xingzuo == "雙子座") {
alert("雖然今天很忙,花費了很多精力時間在工作上,可最終很有可能白忙一場。要是感覺承受不住了,就休" +
"息一下先放下手上的事情,");
}else {
alert("不好意思,查不到了");
}
switch語句:
switch(xingzuo) {
case "白羊座" :
alert("需要出外辦事的次數多,與人交流順暢融洽,這也是你拓展人脈的機會。但是天氣炎熱要注意防暑。");
break;
case "金牛座" :
alert("實力被壓制總不能得到施展,讓你大受打擊,自信心下滑。若是今天要簽約、談判,務必要仔細看" +
"清楚條款,以免被陷害了。");
break;
case "雙子座" :
alert("雖然今天很忙,花費了很多精力時間在工作上,可最終很有可能白忙一場。要是感覺承受不住了,就" +
"休息一下先放下手上的事情,");
default :
alert("不好意思,查不到了");
break;
}
語法:
switch(expression){
case label1: //如果表示式的值等於label1,執行下面的statement1.
statement1;
break; //遇到break,直接跳出switch語句。
case label2: //如果表示式的值等於label2,執行下面的statement2.
statement2;
break; //遇到break,直接跳出switch語句。
case label3: //如果表示式的值等於label3,執行下面的statement3.
statement3;
break; //遇到break,直接跳出switch語句。
……
default: //前面的情況都不匹配,執行default後面的結構體
statement_n;
break;
}
default:相當於if語句裡面的else。可以省略。如果寫了,前面不符合就走default,如果不寫,前面情況都不符合,直接跳出switch。後面的break可以不寫。
break:打斷程式,強制跳出當前的switch語句。如果不寫break,程式會繼續往下進行,直到碰到一個break或者程式執行完,才能跳出。
var a = parseInt(prompt("請輸入一個個位數,會輸出它的英文"));
switch (a) {
case 3 :
alert("three");
case 4 :
alert("four");
case 5 :
alert("five");
case 6 :
alert("six");
case 7 :
alert("seven");
case 8 :
alert("eight");
case 9 :
alert("nine");
default :
alert("sorry,I don't know");
}
雖然不寫不能跳出程式,我們可以利用這個特點做一些特殊的小程式。
var a = parseInt(prompt("請輸入一個個位數,會輸出它是奇數還是偶數"));
switch (a) {
case 1 :
case 3 :
case 5 :
case 7 :
case 9 :
alert("奇數");
break;
default :
alert("偶數");
}