浅谈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 相关文章推荐
Underscore.js常用方法总结
Feb 28 Javascript
jquery实现简单合拢与展开网页面板的方法
Sep 01 Javascript
深入理解Vue 的条件渲染和列表渲染
Sep 01 Javascript
vue.js select下拉框绑定和取值方法
Mar 03 Javascript
express默认日志组件morgan的方法
Apr 05 Javascript
详解ES6中的 Set Map 数据结构学习总结
Nov 06 Javascript
js根据需要计算数组中重复出现某个元素的个数
Jan 18 Javascript
通过实践编写优雅的JavaScript代码
May 30 Javascript
详解Vue项目引入CreateJS的方法(亲测可用)
May 30 Javascript
Vue实现渲染数据后控制滚动条位置(推荐)
Dec 09 Javascript
详解vue组件之间的通信
Aug 30 Javascript
使用vue-element-admin框架从后端动态获取菜单功能的实现
Apr 29 Vue.js
浅谈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
DISCUZ 论坛管理员密码忘记的解决方法
2009/05/14 PHP
PHP XML操作的各种方法解析(比较详细)
2010/06/17 PHP
Yii2中关联查询简单用法示例
2016/08/10 PHP
php封装的单文件(图片)上传类完整实例
2016/10/18 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
ThinkPHP实现附件上传功能
2017/04/27 PHP
常见的5个PHP编码小陋习以及优化实例讲解
2021/02/27 PHP
最新优化收藏到网摘代码(digg,diigo)
2007/02/07 Javascript
JS启动应用程序的一个简单例子
2008/05/11 Javascript
jquery数组之存放checkbox全选值示例代码
2013/12/20 Javascript
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
2016/08/09 Javascript
原生JS取代一些JQuery方法的简单实现
2016/09/20 Javascript
bootstrap table分页模板和获取表中的ID方法
2017/01/10 Javascript
javascript中this用法实例详解
2017/04/06 Javascript
基于AngularJS实现表单验证功能
2017/07/28 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
2017/08/28 Javascript
通过函数作用域和块级作用域看javascript的作用域链
2018/08/05 Javascript
微信小程序如何获取手机验证码
2018/11/04 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
2020/06/05 Javascript
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
浅谈pycharm下找不到sqlalchemy的问题
2018/12/03 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
Python3如何在Windows和Linux上打包
2020/02/25 Python
mac安装python3后使用pip和pip3的区别说明
2020/09/01 Python
CSS3 简写animation
2012/05/10 HTML / CSS
深入理解css属性的选择对动画性能的影响
2016/04/20 HTML / CSS
网络工程专业自荐信范文
2014/03/16 职场文书
涉及车辆房产分割的离婚协议书范文
2014/10/12 职场文书
个人工作作风整改措施思想汇报
2014/10/13 职场文书
2014年公务员工作总结
2014/11/18 职场文书
青年文明号汇报材料
2014/12/23 职场文书
餐饮食品安全责任书
2015/01/29 职场文书
公诉意见书范文
2015/06/05 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书