浅谈javascript中的 “ && ” 和 “ || ”


Posted in Javascript onFebruary 02, 2017

有时候,我们会在jQuery框架或者其他js插件中发现里面有很多 “ && ” 和 “ || ”,那么这两个标识到底是什么含义?怎么使用?我觉得还是有必要稍微深究一下。

一、原理:

&& 操作符特点:逻辑运算表达式中只要一个是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

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
Extjs Ajax 乱码问题解决方案
Apr 15 Javascript
IE6弹出“已终止操作”的解决办法
Nov 27 Javascript
Jquery刷新页面背景图片随机变换的实现方法
Mar 15 Javascript
查询json的数据结构的8种方式简介
Mar 10 Javascript
javascript删除元素节点removeChild()用法实例
May 26 Javascript
再谈JavaScript线程
Jul 10 Javascript
JavaScript对象数组的排序处理方法
Oct 21 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
Dec 03 Javascript
js添加绑定事件的方法
May 15 Javascript
JavaScript提高加载和执行效率的方法
Feb 03 Javascript
Angular通过指令动态添加组件问题
Jul 09 Javascript
Vue 同步异步存值取值实现案例
Aug 05 Javascript
Javascript中的 “&” 和 “|” 详解
Feb 02 #Javascript
javascript实现简易计算器
Feb 01 #Javascript
javascript实现右下角广告框效果
Feb 01 #Javascript
基于javascript实现最简单选项卡切换
Feb 01 #Javascript
快速实现jQuery多级菜单效果
Feb 01 #Javascript
angular实现商品筛选功能
Feb 01 #Javascript
Bootstarp基本模版学习教程
Feb 01 #Javascript
You might like
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
2010/08/01 PHP
phpMyAdmin出现无法载入 mcrypt 扩展,请检查PHP配置的解决方法
2012/03/26 PHP
php编写的简单页面跳转功能实现代码
2013/11/27 PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
2015/05/12 PHP
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
学习php设计模式 php实现单例模式(singleton)
2015/12/07 PHP
JavaScript 对象、函数和继承
2009/07/07 Javascript
jQueryMobile之Helloworld与页面切换的方法
2015/02/04 Javascript
Jquery判断radio、selelct、checkbox是否选中及获取选中值方法总结
2015/04/15 Javascript
jQuery表单验证插件解析(推荐)
2016/07/21 Javascript
jQuery插件HighCharts绘制2D半圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
BootStrap Select清除选中的状态恢复默认状态
2017/06/20 Javascript
微信小程序url传参写变量的方法
2018/08/09 Javascript
vue中使用[provide/inject]实现页面reload的方法
2019/09/30 Javascript
关于angular浏览器兼容性问题的解决方案
2020/07/26 Javascript
python学习数据结构实例代码
2015/05/11 Python
python制作企业邮箱的爆破脚本
2016/10/05 Python
利用python操作SQLite数据库及文件操作详解
2017/09/22 Python
pandas.loc 选取指定列进行操作的实例
2018/05/18 Python
selenium 安装与chromedriver安装的方法步骤
2019/06/12 Python
python数据分析工具之 matplotlib详解
2020/04/09 Python
详解Pandas 处理缺失值指令大全
2020/07/30 Python
国际礼品店:GiftsnIdeas
2018/05/03 全球购物
采用冷却技术的超自然舒适度:GhostBed床垫
2018/09/18 全球购物
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
应届生求职推荐信
2013/10/28 职场文书
导游个人求职信范文
2014/03/23 职场文书
初中生操行评语大全
2014/04/24 职场文书
个人评语大全
2014/05/04 职场文书
企业党员一句话承诺
2014/05/30 职场文书
创文明城市标语
2014/06/16 职场文书
会计专业求职信
2014/08/10 职场文书
2015年学校综合治理工作总结
2015/07/20 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书
90条交通安全宣传标语
2019/10/12 职场文书
SQL优化老出错,那是你没弄明白MySQL解释计划用法
2021/11/27 MySQL