js中的 与或运算顺序 (包含例子)
今天在网上查了js的&&和||的相关文章,感觉现在很多人看文章都缺少验证的思想。接下来我来讲一下我对&&和||的了解,以及贴上对应的demo。
首先确认以下几点:&&与||的执行优先级是一样的,不论有多少的混用都是从左到右执行,同时需要注意短路特性
1、JS中的&&符号:
短路 与:A && B
1.1 如果A为false,表达式返回A (这个就是短路特性,提前结束)
1.2 如果A为true,表达式返回B
结论:一假即假(顾名思义,“且” 肯定是 A 且 B同时为真,结果才为真)
下面来些demo
0 && 1 // 结果 0 原因见 1.1
1 && 0 // 结果 0 原因见 1.2
1 && 2 // 结果 2 原因见 1.2
2、JS中的||符号:
|| 短路 或:A || B
2.1 如果A为true,表达式返回A (这个就是短路特性,提前结束)
2.2 如果A为false,表达式返回B
结论:一真即真(顾名思义,“或“ 只要 A 或 B有一个为真,结果就为真)
下面来些demo
1 || 0 // 结果 1 原因见 2.1
0 || 2 // 结果 2 原因见 2.2
对于一个符号的话都比较好理解,对于两个符号混用的也是同样的道理
1 && 3 || 0 && 4 // 结果是 3
很多分析:先执行1&&3 返回3,再执行0&&4返回0,最后执行结果比较 3||0 返回 3,这个过程是不对的,其实正确的执行顺序应该是遵循短路特性,具体过程如下:
第1步:先执行1&&3 因为,1为真,没有提前短路,返回3
第2步:再执行3 || 0 ,这时候3 || 0的时候,因为 || 的第一个是3,提前结束,所以返回3,其实是没有执行 0 && 4的。
接下来用一个demo来验证一下:
备注: 为了验证,我们把原先 a 改成 (console.log(“run a”), a),这里用的了 运算符 “,” 这个运算符是取最后一个的值,所以等价。
(console.log("run 1"), 1) && (console.log("run 3"), 3) || (console.log("run 0"), 0) && (console.log("run 4"), 4)
上面的结果验证了我们的猜想。
其实 && 和 || 很简单,只要知道它们每个返回结果,以及短路特性,就可以算出最后的结果。
&& 和 || 除了判断结果之外,还能给变量赋值默认值的作用:
eg:
a = a || “默认值”;
js中的 与或运算顺序 (包含例子)相关推荐
- python操作符顺序_Python语言中的操作符与运算顺序
在新鲜出炉的9月TIOBE编程语言排行榜上,Python历史性的挤下C++,次进入前三位,Python的热度也以肉眼可见的速度快速上涨着,学习Python的人越来越多,不只是成人,很多青少儿也选择从P ...
- JS中双层for循环执行顺序
js中双层for循环的执行顺序 1 首先会先执行第一层循环,执行顺序如图所示.1:执行变量**(仅执行一次)**2:执行条件 3:执行代码块区域(注意,代码块中包含第二层循环) 4最后执行++. 2 ...
- JS中同名函数有效执行顺序
html中如果出现函数同名时: 如果有多个外部引入的js文件,例如a.js和b.js(引入顺序假定是a.js,然后是b.js),同时html中本身也有内部的js. 那么针对 出现函数名一样的情况时,无 ...
- c语言中同级运算符的运算顺序,二 如何学习C语言的运算符和运算顺序
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 C语言的运算功能十分丰富,运算种类远多于其它程序设计语言.因此,当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则 ...
- JS中页面跳转,传值包含中文时乱码解决方案
首先,在JS中将要传递的中文编码:encodeURI(encodeURI(value)): 然后在跳转界面中取值时通过以下方式解码:java.net.URLDecoder.decode(value , ...
- js中的装饰器执行顺序
/*** 执行顺讯* [(property)...]->[(parameter->method)...]->constructor->class* [属性...]->[( ...
- 彻底理解js中this
相关博文:http://blog.csdn.net/libin_1/article/details/49996815 彻底理解js中this的指向,不必硬背. 首先必须要说的是,this的指向在函数定 ...
- 彻底理解js中this的指向
首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...
- 理解JS中的this的指向
原文地址:https://www.cnblogs.com/pssp/p/5216085.html#1 首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到 ...
最新文章
- 赠书 | 图像分类问题建模方案探索实践
- 吊打 ThreadLocal!
- python parser count_Python分析哪座城市小吃最好吃
- Android中SharedPreferences与Editor的使用
- 加速财务自由的7种理财方法
- Linux使用tcpdump抓获取WIFI包
- idea java 非法字符_IDEA提示非法字符,你不懂的UTF-8
- SQLSERVER聚集索引的整理(重建)的必要性测试
- ZeroClipboard实现复制
- 修改一行代码,将图像匹配效果提升14%
- 【软件加密】python制作一个超强的加密软件
- TCP通信丢包原因总结
- 反垃圾邮件组织spamhaus黑名单移除说明
- 新加坡NETS高管Alvin Seck先生访问日本,以利用NIPPON Platform促进业务发展
- 基金训练营学习笔记3-股票基金
- 四位达林顿_达林顿管的四种接法与常用型号
- java注释搞笑图案_搞笑的代码注释,那些有趣的程序员
- vasp测试计算机,求助:无法判断vasp测试是否完成
- Error: ERROR 726 (43M10): Inconsistent namespace mapping properties. Cannot initiate connection as S
- 2018VR一体机VR眼镜哪个牌子好?大家都选了UGP VR眼镜,UGP VR一体机