JS中||或 、 && 与的执行顺序测试
来源:互联网 发布:免费股票交易软件 编辑:程序博客网 时间:2024/06/06 11:47
js中|| 和&&的执行结果默认是0为false。
a && b ,如果 a 为true,直接返回b,而不管b为true或者false,否则返回a;
a || b ,如果 a 为false,直接返回b,而不管b为true或者false,否则返回 a。
如alert(-1||-2); 返回-1;alert(-1&&-2);返回-2
例1:
var i = 1;var t =( 9 ||(function(){i = 2;console.log("fn1");return false;})() && (function(){i = 3;console.log("fn2");return true;})()&& (function(){i = 4;console.log("fn3");return true;})());console.log("t=",t,"i=",i)
输出结果:
例2:
var i = 1;var t =( (9 ||(function(){i = 2;console.log("fn1");return false;})() )&& (function(){i = 3;console.log("fn2");return true;})()&& (function(){i = 4;console.log("fn3");return true;})());console.log("t=",t,"i=",i)输出结果:
这里和||、&&的短路有关,||式子前结果是true则短路,即||式后面的表达式不计算,直接返回||式前值;&&式子前是false则短路,返回&&式子前的值,后面的式子不计算。||、&&按从左往右的顺序执行。
所以例1中,9大于0为true又是||或运算,出现短路后面的式子都不计算,直接返回9;例2 或||计算外加了括号,需先计算出结果后再和其他式子进行与&&计算。(9 ||(function(){i = 2;console.log("fn1");return false;})())这个表达式里面会出现或运算短路的情况,这里计算完进行&&与运算时,因&&式式前不是false所以不会有短路,会一直计算完整个式子。
参考:http://www.cnblogs.com/abi-blog/p/5282779.html
0 0
- JS中||或 、 && 与的执行顺序测试
- js执行顺序测试
- js与jsp的执行顺序
- js的并行加载与顺序执行
- js的并行加载与顺序执行
- HTML中Js脚本的执行顺序
- 关于js中函数的执行顺序
- JS中函数执行顺序的问题
- JS中方法的执行顺序
- JS的执行顺序
- JS的执行顺序
- js执行的顺序
- 优先级 与 测试执行顺序
- js加载与执行顺序
- js编译与执行顺序
- js中与Java代码及ajax的执行顺序问题
- 页面中js执行顺序----
- cout中表达式的先后执行顺序与输出顺序
- python 画二维图
- Python Simple Programs 简单小程序
- 屏幕适配
- 知识点:float、position与display关系
- css实现导航条
- JS中||或 、 && 与的执行顺序测试
- MachineLearning_note:Logistic Regression(Classification)
- 【codeforces 752E】Santa Claus and Tangerines
- mongodb用户权限管理配置
- Android 水波纹效果
- hadoop2.x常用端口、定义方法及默认端口、hadoop1.X端口对比
- jQuery加载
- Mybaits的特点及优点
- smarty学习3