js基础之三元运算符:switch语句

转载自品略图书馆  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语句是当一个值去匹配多种情况时,最适合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值