浅谈JS运算符&&和|| 及其优先级


Posted in Javascript onAugust 10, 2016

今天看了一段YUI compressor压缩的js代码:

userNum && (ind += index,ind >= userNum && (ind -= userNum),ind < 0 && (ind === -2 && (ind = -1),ind += userNum),selLi.removeClass("on"),$(selLi[ind]).addClass("on"));

直接疯掉了,估计一下子没几个人能看懂。那么就把他“翻译”一下。

&& (逻辑与)

这里主要是一个“&&”运算,首先要搞懂这个,看一个简单的例子:

1 var a = 1 && 2 && 3;//3 

2 var b = 0 && 1 && 2;//0 

3 var c = 1 && 0  && 2;//0 

4 alert(a),alert(b),alert(c);

嘿嘿,写法很奇怪,运行的结果是3,0,0。一般我们在if语句中经常用到。“&&” (逻辑与) 运算和“||”运算真好相反,“&&” 运算遇到false就返回。

例如: a && b ,如果 a 为true,直接返回b,而不管b为true或者false 。如果 a 为false 那么直接返回a,上面例子中第一个var a = 1 && 2 && 3;因为1 && 2,1为真,返回2;2&&3, 2为真,返回3 。

搞懂了“&&” 运算,再来看最上的面的YUI compressor压缩的js代码,翻译一下:

if(userNum){
	ind+=index;
	if(ind>=userNum){
	 	ind-=userNum;
	}
     if(ind < 0){
		if(ind === -2){
			ind = -1;
		}
  		ind += userNum;
	}
	selLi.removeClass("on");
	$(selLi[ind]).addClass("on");
  }

说来惭愧,年纪大了,足足“翻译”了半个小时,还是在同事的帮助下才“翻译”正确。

||(逻辑或)

再来看看“||”(逻辑或)运算,看例子:

1 var a = 0 || 1 || 2;//1 

2 var b = 1 || 0 || 3;//1 

3 alert(a),alert(b);

“||”运算遇到true就返回。例如:a || b ,如果 a 为false,直接返回b,而不管b为true或者false 。如果 a 为true,直接返回a,而不会继续往下执行。

&& (逻辑与) 和||(逻辑或)混合使用的时候要注意他们的优先级:

&& (逻辑与) 优先级高于||(逻辑或)

return a && b || c ,

根据a来判断返回值,a 是 false 则肯定返回 c;如果 b , c 都是 true ,那么我们就可以根据 a 来决定b 还是 c ,如果 a 是 false 则返回 c,如果a是true 则返回 b。

return a || b && c

根据优先级相当于先算 b && c ,然后和a 相 或;如果a是true,则返回a,不论是b或c,如果a是false,则如果b是false,返回b,如果b是true,返回c; 

1 var a = 3  &&  0 || 2;  //2 

3 var b = 3 || 0  &&  2; // 3 

5 var c= 0 || 2 && 3; // 3 

6 alert(a),alert(b),alert(c);

另附:JS运算符优先级(从高到低列出)

运算符 描述
. [] () 字段访问、数组下标、函数调用以及表达式分组
++ -- - ~ ! delete new typeof void 一元运算符、返回数据类型、对象创建、未定义值
* / % 乘法、除法、取模
+ - + 加法、减法、字符串连接
> >>> 移位
>= instanceof 小于、小于等于、大于、大于等于、instanceof
== != === !== 等于、不等于、严格相等、非严格相等
& 按位与
^ 按位异或
| 按位或
&& 逻辑与
|| 逻辑或
?: 条件
= oP= 赋值、运算赋值
, 多重求值

以上这篇浅谈JS运算符&&和|| 及其优先级就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
十个优秀的Ajax/Javascript实例网站收集
Mar 31 Javascript
js change,propertychange,input事件小议
Dec 20 Javascript
利用JS来控制键盘的上下左右键(示例代码)
Dec 14 Javascript
parentElement,srcElement的使用小结
Jan 13 Javascript
jquery 淡入淡出效果的简单实现
Feb 07 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
Jan 18 Javascript
js实现html table 行,列锁定的简单实例
Oct 13 Javascript
js调用屏幕宽度的简单方法
Nov 14 Javascript
微信小程序 闭包写法详细介绍
Dec 14 Javascript
js replace替换字符串同时替换多个方法
Nov 27 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
Dec 12 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
May 10 jQuery
浅谈jQuery中的checkbox问题
Aug 10 #Javascript
jQuery实现将div中滚动条滚动到指定位置的方法
Aug 10 #Javascript
Three.js学习之网格
Aug 10 #Javascript
js 将图片连接转换成base64格式的简单实例
Aug 10 #Javascript
jQuery实现的选择商品飞入文本框动画效果完整实例
Aug 10 #Javascript
最棒的Angular2表格控件
Aug 10 #Javascript
浅谈js中的三种继承方式及其优缺点
Aug 10 #Javascript
You might like
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
function, new function, new Function之间的区别
2007/03/08 Javascript
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
javascript 仿QQ滑动菜单效果代码
2010/09/03 Javascript
10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
2011/06/08 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
2015/03/12 Javascript
javascript实现汉字转拼音代码分享
2015/04/20 Javascript
JavaScript操作select元素和option的实例代码
2016/01/29 Javascript
jQuery 获取多选框的值及多选框中文的函数
2016/05/16 Javascript
JS中的进制转换以及作用
2016/06/26 Javascript
nodejs前端自动化构建环境的搭建
2017/07/26 NodeJs
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
微信小程序三级联动选择器使用方法
2020/05/19 Javascript
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
微信小程序canvas实现签名功能
2021/01/19 Javascript
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python 比较两个数组的元素的异同方法
2017/08/17 Python
python远程连接MySQL数据库
2019/04/19 Python
Python实现的爬取百度贴吧图片功能完整示例
2019/05/10 Python
Python实现aes加密解密多种方法解析
2020/05/15 Python
python3实现将json对象存入Redis以及数据的导入导出
2020/07/16 Python
如何利用python发送邮件
2020/09/26 Python
html5教程调用绘图api画简单的圆形代码分享
2013/12/04 HTML / CSS
英国著名的药妆网站:Escentual
2016/07/29 全球购物
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
估算杭州有多少软件工程师
2015/08/11 面试题
中软国际Java程序员机试题
2012/08/19 面试题
物业管理毕业生个人的求职信
2013/11/30 职场文书
演讲主持词
2014/03/18 职场文书
遗嘱公证书标准样本
2014/04/08 职场文书
诚信考试倡议书
2014/04/15 职场文书
植树节标语
2014/06/27 职场文书
授权委托书协议书
2014/10/16 职场文书
2014年转正工作总结
2014/11/08 职场文书
大雁塔导游词
2015/02/04 职场文书