选择语句
1、if..else语句
语法:
只有一个判断条件的时候 if..else:
if(判断条件){ // 当判断条件为true的时候执行代码1,为false的时候执行代码2
代码1;
}else{
代码2;
}
当不止一个判断条件的时候 else用else if 代替:
if(判断条件1){ // 判断条件 1 为 true 的时候执行 代码 1
代码1;
}else if(判断条件2){ // 判断条件 2 为 true 的时候执行 代码 2
代码2;
}else{ // 两个条件都不满足的时候执行代码 3
代码3;
}
思考1:
- 如果满
18,告诉他可以看电影 - 如果满了
16,告诉他可以在家长的陪同下观看 - 如果不够
16,告诉他不准看
let age = 20;
if(age >= 18){
console.log("没时间解释了,赶紧上车吧"); // 打印这条
}else if(age >= 16){
console.log("请在家长的陪同下观看");
}else {
console.log("回家学习吧");
}
思考2:
- 根据
new Date().getDay()获取今天是星期几 - 由于获取到的是纯数字,现在需要根据这个数字输出"今天是周*"的字符串
let date = new Date(); // 获取当前的时间
let week = date.getDay(); // 获得 0-6 表示周几 0:星期日
if(week == 0){
console.log("今天是星期天");
}else if(week == 1){
console.log("今天是星期一");
}else if(week == 2){
console.log("今天是星期二");
}else if(week == 3){
console.log("今天是星期三");
}else if(week == 4){
console.log("今天是星期四");
}else if(week == 5){
console.log("今天是星期五");
}else if(week == 6){
console.log("今天是星期六");
}else{
console.log("你火星的来的吧");
}
2、switch..case
语法:
// switch: 开关; case: 案列;
switch(变量){ // 判断变量是否全等于case的值1,或者值2,
case 值1:
执行代码1; // 全等于的时候执行代码1
break; // 然后break;代码跳出switch语句, 不加break,会继续执行下面的代码
case 值2:
执行代码2;
break;
default:
执行代码3; // 当都不满足条件的时候,会执行默认里的执行代码3
}
思考:素质教育(把分数变成ABCDE)
// 90-100 : A
// 80-89: B
// 70-79: C
// 60-69: D
// 0-59 : E
// 这里的等级是根据一个范围的分数划定的,用if..else很容易实现,但是switch..case是一个具体的条件,怎么办呢?
// 方法:将分数除以10再用parseInt属性取整
let score = 85;
score = parseInt(score/10); // 8
switch (score) {
// score = 10 或者 9 的时候 返回 A
case 10:
case 9:
console.log("A");
break;
// score = 8 的时候 返回 B
case 8:
console.log("B");
break;
case 7:
console.log("C");
break;
case 6:
console.log("D");
break;
default:
console.log("E");
}
3、三元运算符
这个运算符可以用来代替
if..else条件判断。但是为什么有这个运算符呢?这里的原因是if..else使用两个代码块,却只有一个会执行,在讲究的程序员看来是一种浪费。所以使用三元运算符,用一条语句就可以完成功能。
语法:
判断语句?表达式1:表达式2;
根据判断语句返回的布尔值,true的话,返回表达式1,false的话返回表达式2
举个例子,看代码:
let sex = 1;
sex == 1 ? "男":"女"; // 判断sex是否等于1,如果true,返回第一个表达式:"男"
例题:判断两个数的大小
// 用if..else语句解决
// 这里使用了两个代码块,有点浪费
let num1 = 18;
let num2 = 39;
let max;
if(num1>num2){
max = num1;
}else{
max = num2;
}
console.log(max);
// 用三元运算符
let num3 = 28;
let num4 = 49;
let max1 = num3>num4? num3:num4;
console.log(max1);
注意(容易出错的地方):
下面这个语句判断如果是会员,费用为
2美元,非会员,为10美元。现在设置了非会员,却打印出了2美元,显然出错了。
let isMember = false;
console.log("当前费用" + isMember ? "$2.00" : "$10.00"); // "$2.00"
出错的原因是
?号的优先级比+号低,所以实际运行的语句是
// true
console.log("当前费用false" ? "$2.00" : "$10.00"); // "$2.00"