实现逻辑与和逻辑或的条件判断

一、原理:

&& 操作符特点:逻辑运算表达式中只要一个是false就取false的值,都是true取后面,都是false取前面。

|| 操作符特点:逻辑运算表达式中只要一个是true就取true的值,都是true取前面,都是false取后面。

在js逻辑运算中,我们知道 0、""、null、false、undefined、NaN 这五种数据类型是会被判断为false的。那么,我们在进行js的逻辑运算过程中,就可以根据上面的原理以及这五种数据类型来进行相应的判断处理。直接上DEMO…

二、原始DEMO:

先亮出问题!!!

如果我们要根据学生的成绩来判断等级,比如:90分表示A,80分表示B,60分表示C,其他表示D。

那么我们可以这么做:

JS代码:
var score = 90;
var grade = ‘’;
if(score === 90){
grade = “A”;
}else if(score === 80){
grade = “B”;
}else if(score === 60){
grade = “C”;
}else{
grade = “D”;
}
console.log(“当前学生等级为:” + grade); // 当前学生等级为:A
或者这样:
var score = 90;
var grade = ‘’;
switch(score){
case 90:
grade = “A”;
break;
case 80:
grade = “B”;
break;
case 60:
grade = “C”;
break;
default:
grade = “D”;
break;
};
console.log(“当前学生等级为:” + grade); // 当前学生等级为:A

三、优化DEMO:

其实,如果我们用 “ && ” 和 “ || ” 的话,大可不必如上面那么麻烦。
var score = 90;
var grade = (score=90 && ‘A’) || (score=80 && ‘B’) || (score===60 && ‘C’) || ‘D’;
console.log(“当前学生等级为:” + grade); // 当前学生等级为:A
上面代码可以这么理解:

如果score的值等于90,那么score===90的逻辑表达式就成立(也即是true),就会执行到后面 ‘A’ 的赋值操作,同时后面的“||” 逻辑运算也可以忽略(因为“||”运算符的特点是前面一旦为true,后面就没有执行的必要了)。

如果score的值不等于90,那么score=90的逻辑表达式就不成立(也即是false),根据“&&”操作符的特点,我们知道“(score=90 && ‘A’)”这段代码就不会执行到后面 ‘A’ 的赋值操作,同时由于“(score===90 && ‘A’)”这段代码整体是false,那么根据“||”的特点,整个逻辑表达式会继续往后执行。

以此类推,如果前面所有的逻辑表达式都不成立,那么根据“||”的特点(全部为false就取最后面的),最后的grade赋值就会是“D”。

我们还可以用JSON形式来处理上面的逻辑运算:
var score = 90;
var grade = {90:“A”, 80:“B”, 60:“C”}[score] || ‘D’;
console.log(“当前学生等级为:” + grade); // 当前学生等级为:A
这里利用了JSON对象的属性读取,当“JSON对象.属性值”存在的时候(为true),就会取得对应属性的key值(A、B或者C)。当score属性值不存在与JSON对象中的时候,就会执行“||”后面的内容,也就是把grade赋值为“D”。

当然,我们会发现上面的数值比较并没有太大的实用性,比如当学生的成绩在85分的时候,等级也会变成“D”,这明显是不合适的!!!

所以我们可以把上面的代码再优化下,把数值的 “相等比较” 改成 “范围区间比较” 。
var score = 85;
var grade = (score>=90 && ‘A’) || (score>=80 && ‘B’) || (score>=60 && ‘C’) || ‘D’;
console.log(“当前学生等级为:” + grade); // 当前学生等级为:B

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值