浅谈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 相关文章推荐
javascript 从if else 到 switch case 再到抽象
Jul 17 Javascript
JavaScript实现GriwView单列全选(自写代码)
May 13 Javascript
JS仿百度搜索自动提示框匹配查询功能
Nov 21 Javascript
angularJS结合canvas画图例子
Feb 09 Javascript
深入浅析JavaScript中对事件的三种监听方式
Sep 29 Javascript
jquery与ajax获取特殊字符实例详解
Jan 08 Javascript
Vue使用vue-cli创建项目
Sep 01 Javascript
微信小程序 MinUI组件库系列之badge徽章组件示例
Aug 20 Javascript
JQuery特殊效果和链式调用操作示例
May 13 jQuery
JS回调函数深入理解
Oct 16 Javascript
使用axios请求时,发送formData请求的示例
Oct 29 Javascript
京东优选小程序的实现代码示例
Feb 25 Javascript
浅谈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
PHP中创建并处理图象
2006/10/09 PHP
深入PHP变量存储的详解
2013/06/13 PHP
在PHP中使用redis
2013/11/04 PHP
PHP下载远程文件到本地存储的方法
2015/03/24 PHP
PHP 中提示undefined index如何解决(多种方法)
2016/03/16 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
PHP时间类完整代码实例
2021/02/26 PHP
传智播客学习之java 反射
2009/11/22 Javascript
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
javascript针对DOM的应用实例(一)
2012/04/15 Javascript
JS幻灯片可循环播放可平滑旋转带滚动导航(自写)
2013/08/05 Javascript
jquery按回车提交数据的代码示例
2013/11/05 Javascript
JavaScript汉诺塔问题解决方法
2015/04/21 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
2019/07/21 Javascript
原生js实现下拉框选择组件
2021/01/20 Javascript
python使用Apriori算法进行关联性解析
2017/12/21 Python
Django框架模板注入操作示例【变量传递到模板】
2018/12/19 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
Django 中间键和上下文处理器的使用
2019/03/17 Python
python如何删除文件中重复的字段
2019/07/16 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
解决python web项目意外关闭,但占用端口的问题
2019/12/17 Python
利用keras使用神经网络预测销量操作
2020/07/07 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
2020/10/28 Python
用CSS禁用输入法(CSS3 UI规范)实例解析
2012/12/04 HTML / CSS
利用HTML5实现使用按钮控制背景音乐开关
2015/09/21 HTML / CSS
百丽国际旗下购物网站:优购
2017/02/28 全球购物
纽约复古灵感的现代珠宝品牌:Lulu Frost
2018/03/03 全球购物
香港唯港荟酒店预订:Hotel ICON
2018/03/27 全球购物
人事部主管岗位职责
2013/12/26 职场文书
遗体告别仪式答谢词
2014/01/23 职场文书
学校课外活动总结
2014/05/08 职场文书
《雷雨》教学反思
2016/02/20 职场文书