解释&&和||在javascript中的另类用法


Posted in Javascript onJuly 28, 2014

又开始研究起 Titanium 来,发现其官方出品的MVC框架(Alloy)还是挺不错的,刚开始苦于没有好的代码来学习,文档又少,所以一直没去详细研究,后来发现原来官方的 CodeStrong 就是一套非常不错的学习代码,只要看通了其整套代码,相信对Alloy的使用也基本会了~

在看其源码的同时,发现很多地方使用了诸如以下的用法:

$.clouds && ($.index.add($.clouds));

开始不是很理解,毕竟平时这样用的也少,上了下google后才知道原来这样写法非常方便好用(其实jquery的源码里也大量使用此方法)。以下引用一段网上找到的解释&&和||在javascript中的另类用法:
a() && b() :如果执行a()后返回true,则执行b()并返回b的值;如果执行a()后返回false,则整个表达式返回a()的值,b()不执行;
a() || b() :如果执行a()后返回true,则整个表达式返回a()的值,b()不执行;如果执行a()后返回false,则执行b()并返回b()的值;

&& 优先级高于 ||

看完后就相当清楚了,再看看具体代码:
alert((1 && 3 || 0) && 4); //结果4 ①
alert(1 && 3 || 0 && 4); //结果3 ②
alert(0 && 3 || 1 && 4); //结果4 ③

分析:

语句①:1&&3 返回3 => 3 || 0 返回 3 => 3&&4 返回 4
语句②:先执行1&&3 返回3,在执行0&&4返回0,最后执行结果比较 3||0 返回 3
语句③:先执行0&&3 返回0,在执行1&&4返回4,最后执行结果比较 0||4 返回 4
注:非0的整数都为true,undefined、null和空字符串”” 为false。

感觉javascript确实挺强挺灵活的!!

Javascript 相关文章推荐
如何用javascript判断录入的日期是否合法
Jan 08 Javascript
JavaScript 异步调用框架 (Part 5 - 链式实现)
Aug 04 Javascript
Jquery 表格合并的问题分享
Sep 17 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
Feb 05 Javascript
onkeypress字符按键兼容所有浏览器使用介绍
Apr 24 Javascript
js判断上传文件类型判断FileUpload文件类型代码
May 20 Javascript
jQuery实现form表单元素序列化为json对象的方法
Dec 09 Javascript
移动端脚本框架Hammer.js
Dec 15 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
Feb 14 Javascript
Node.js使用Koa搭建 基础项目
Jan 08 Javascript
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
Dec 05 Javascript
vue实现公告栏文字上下滚动效果的示例代码
Jun 16 Javascript
wap手机图片滑动切换特效无css3元素js脚本编写
Jul 28 #Javascript
jQuery内置的AJAX功能和JSON的使用实例
Jul 27 #Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
Jul 27 #Javascript
jquery JSON的解析方式示例介绍
Jul 27 #Javascript
jQuery提交多个表单的小技巧
Jul 27 #Javascript
用javascript对一个json数组深度赋值示例
Jul 27 #Javascript
在JS数组特定索引处指定位置插入元素
Jul 27 #Javascript
You might like
php 数组的一个悲剧?
2011/05/11 PHP
php设计模式 Interpreter(解释器模式)
2011/06/26 PHP
PHP实现邮件群发的源码
2013/06/18 PHP
PHP实现根据浏览器跳转不同语言页面代码
2013/08/02 PHP
zend optimizer在wamp的基础上安装图文教程
2013/10/26 PHP
php单例模式实现方法分析
2015/03/14 PHP
php使用ob_flush不能每隔一秒输出原理分析
2015/06/02 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
PHP魔术方法使用方法汇总
2016/02/14 PHP
PHP+iframe模拟Ajax上传文件功能示例
2019/07/02 PHP
JS面向对象、prototype、call()、apply()
2009/05/14 Javascript
mailto的使用技巧分享
2012/12/21 Javascript
jquery实现的下拉和收缩效果示例
2014/08/21 Javascript
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
使用Raygun来自动追踪AngularJS中的异常
2015/06/23 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
2017/01/10 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
JS实现的JSON数组去重算法示例
2018/04/11 Javascript
node.js文件操作系统实例详解
2019/11/05 Javascript
js实现时间日期校验
2020/05/26 Javascript
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
[04:10]2018年度CS GO玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
Python迭代用法实例教程
2014/09/08 Python
在Python中使用HTML模版的教程
2015/04/29 Python
基于Python的关键字监控及告警
2017/07/06 Python
python3的print()函数的用法图文讲解
2019/07/16 Python
Python正则表达式学习小例子
2020/03/03 Python
CSS3 linear-gradient线性渐变生成加号和减号的方法
2017/11/21 HTML / CSS
爱尔兰橄榄球店:Irish Rugby Store
2019/12/05 全球购物
幼儿园教师考核制度
2014/02/01 职场文书
党员群众路线对照检查材料
2014/08/31 职场文书
大学生党员学习焦裕禄精神思想汇报
2014/09/10 职场文书
2014年党小组工作总结
2014/12/20 职场文书
校园广播站开场白
2015/06/01 职场文书
Nginx的gzip相关介绍
2022/05/11 Servers