转载自品略图书馆 http://www.pinlue.com/article/2019/03/3111/488518576327.html
一、三元运算符
三元运算符也叫三元表达式。是唯一一个涉及3个参数的表达式。
表达式的形式:
1 条件表达式 ? 值1 : 值2;
表示:当条件表达式为真时,取值1;
当条件表达式为假时,取值2。
1 var a = (7 > 8) ? 8 : 7;
2 console.log(a);
1 var a = (7 < 8) ? 8 : 7;
2 console.log(a);
三元运算符也是条件分支语句。三元表达式都可以转为if语句。等价写法;
1 if(7 > 8){
2 console.log(7);
3 }else{
4 console.log(8);
5 }
三元表达式有自己优势,当变量的赋值有2种可能时,也就是二选一的情况用三元表达式非常简单。
小案例:
1 // 计算年终奖。
2 // 当工作年限为不满1年,工资小于8000,年终奖为工资倍数的1倍,否则是1.2倍;
3 // 当工作年限为不满2年,工资小于10000,年终奖为工资倍数的1.5倍,否则是1.7倍;
4 // 当工作年限为超过2年,工资小于13000,年终奖为工资倍数的2.3倍,否则是3倍;
5 if(year == 0){
6 beishu = salary < 8000 ? 1 : 1.2;
7 }else if(year == 1){
8 beishu = salary < 10000 ? 1.5 : 1.7;
9 }else{
10 beishu = salary < 13000 ? 2.3 : 3;
11 }
备用选项:我们通常还可以用逻辑运算符,实现备用选项&& , ||
1 var score = parseInt(prompt("请输入您这次考试的成绩")) || 0;
2 var jie = score < 60 ? alert("不及格") : alert("及格");
二、switch语句
switch语句也是我们条件分支语句,又叫开关语句,允许一个程序去计算一个表达式的值,让这个值去匹配一个case 选项,匹配成功直接执行该case中的结构体。
语法:
1 switch(expression){
2 case label_1:statements1; //匹配label_1,执行case中的结构体
3 break; //强制跳出该switch
4 case label_2:statements2; //匹配label_2,执行case中的结构体
5 break; //强制跳出该switch
6 ……
7 default: statementsx; //表示前面所有的case都不满足执行的结构体
8 break; //这个break可有可无
9 }
①default语句可以不写,表示前面的case都不满足,直接跳出该switch语句。
default后面的break可有可无:因为不写break也可以直接跳出该switch。
1 var xingzuo = prompt("请输入您的星座");
2 switch(xingzuo){
3 case "白羊座":
4 alert("对于公司出台的新规定,会感觉受到限制,有抵制情绪产生。不是别人对自己挑剔而是平时自己太任性,约束得不够而已。感情上出现竞争时,不要太过狂妄,赶快进入备战状态吧。对钱财的支出要有一个计划才行,不然难免会出现荷包干涩的状况。");
5 break;
6 case "金牛座":
7 alert("今天与另一半的相处比较融洽,你的好情绪能感染对方,另彼此身心愉悦。财运方面,你的收入水平持续的增长,来自多方面的补益让人羡慕不已。工作上外援助力强,困难之时易得到他人的无私帮助。");
8 break;
9 case "双子座":
10 alert("今天容易受到流言蜚语的中伤,不要太在意,以免因此阻碍你前进的步伐。单身者会感到空虚,不能因此而放纵自己。财运较好,新的进财渠道让你收入颇丰,对需要帮助的人伸出援手会给你带来好运。");
11 break;
12 case "巨蟹座":
13 alert("已婚者享受着被疼爱的感觉,有了情感的滋润,做事的热情尤为浓厚。创业者商机源源不断,关键时刻还能获得意想不到的帮助,即便是难关亦能顺利度过。今天工作可得用心一点,上司在看着你喔!");
14 break;
15 default:
16 alert("没有您输入星座");
17 break;
18 }
②switch语句都可以改成if语句。
1 if(xingzuo == "白羊座"){
2 alert("对于公司出台的新规定,会感觉受到限制,有抵制情绪产生。不是别人对自己挑剔而是平时自己太任性,约束得不够而已。感情上出现竞争时,不要太过狂妄,赶快进入备战状态吧。对钱财的支出要有一个计划才行,不然难免会出现荷包干涩的状况。");
3 }else if(xingzuo == "金牛座"){
4 alert("今天与另一半的相处比较融洽,你的好情绪能感染对方,另彼此身心愉悦。财运方面,你的收入水平持续的增长,来自多方面的补益让人羡慕不已。工作上外援助力强,困难之时易得到他人的无私帮助。");
5 }else if(xingzuo == "双子座"){
6 alert("今天容易受到流言蜚语的中伤,不要太在意,以免因此阻碍你前进的步伐。单身者会感到空虚,不能因此而放纵自己。财运较好,新的进财渠道让你收入颇丰,对需要帮助的人伸出援手会给你带来好运。");
7 }else if(xingzuo == "巨蟹座"){
8 alert("已婚者享受着被疼爱的感觉,有了情感的滋润,做事的热情尤为浓厚。创业者商机源源不断,关键时刻还能获得意想不到的帮助,即便是难关亦能顺利度过。今天工作可得用心一点,上司在看着你喔!");
9 }else{
10 alert("没有您输入的星座");
11 }
③break表示强制跳出该switch语句,如果没有break,语句在匹配完之后,执行了想要的代码部分,不会自动跳出,会继续往下执行代码,哪怕后面的case不匹配,直到遇到一个break,才会跳出。
1 var a = 4;
2 switch(a){
3 case 1:console.log(1);
4 case 2:console.log(2);
5 case 3:console.log(3);
6 case 4:console.log(4);
7 case 5:console.log(5);
8 case 6:console.log(6);
9 default:console.log(10);
10 }
11 console.log(1000);
为什么5,6,10会输出。因为匹配到了case 4后面没有break会继续执行,即使不满足后面的case,也会输出后面的结构体。
虽然break必须写,但是有时我们反倒可以利用一下这个特性:
1 // 2月28天,1,3,5,7,8,10,12月31,其他的是30天
2 var month = parseInt(prompt("请输入一个月份"));
3 switch(month){
4 case 1:
5 case 3:
6 case 5:
7 case 7:
8 case 8:
9 case 10:
10 case 12:alert("该月有31天!!!!!");
11 break;
12 case 2:alert("该月有28天");
13 break;
14 default:alert("该月有30天");
15 break;
16 }
错误写法:一下写法是错误的,因为计算机再遇见表达式时,它会先计算表达式。结果1。
17 var month = parseInt(prompt("请输入一个月份"));
18 switch(month){
19 case 1 || 3 || 5 || 7 || 8 || 10 || 12:
20 alert("该月有31天!!!!!");
21 break;
22 case 2:alert("该月有28天");
23 break;
24 default:alert("该月有30天");
25 break;
1 }
switch还有一种另类写法:直接在switch中写true,在case语句中书写表达式。当case 中的表达式为真时,可以与switch语句中的true匹配输出该case中的结构体。
1 var shu = parseInt(prompt("请输入您的分数")) || 0;
2 switch(true){
3 case shu < 60:
4 alert("不及格");
5 break;
6 case shu < 80:
7 alert("良好");
8 break;
9 case shu < 90:
10 alert("优秀");
11 break;
12 default:
13 alert("非常棒!!!");
14 }
该另类写法,语法上也不是特别清晰,还不如if语句。
总结:以上三种条件分支语句适用的情况
if语句是最常用的,用途最广泛。一定要牢牢掌握。
三元表达式适用于变量的赋值是二选一的情况时,最适合。
switch语句是当一个值去匹配多种情况时,最适合。