Javascript的&&和||的另类用法


Posted in Javascript onJuly 23, 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 相关文章推荐
js实现运行代码需要刷新的解决方法
Aug 18 Javascript
javascript中利用数组实现的循环队列代码
Jan 24 Javascript
Jquery下:nth-child(an+b)的使用注意
May 28 Javascript
js获取客户端外网ip的简单实例
Nov 21 Javascript
js propertychange和oninput事件
Sep 28 Javascript
jQuery实现按键盘方向键翻页特效
Mar 18 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
Mar 08 Javascript
深入理解vue.js中的v-if和v-show
Jun 22 Javascript
浅谈ES6新增的数组方法和对象
Aug 08 Javascript
Vue+Element实现网页版个人简历系统(推荐)
Dec 31 Javascript
vue如何搭建多页面多系统应用
Jun 17 Javascript
浅谈 JavaScript 沙箱Sandbox
Nov 02 Javascript
jQuery获取节点和子节点文本的方法
Jul 22 #Javascript
jQuery打印图片pdf、txt示例代码
Jul 22 #Javascript
JavaScript匿名函数与委托使用示例
Jul 22 #Javascript
javascript中声明函数的方法及调用函数的返回值
Jul 22 #Javascript
js判断变量初始化的三种形式及推荐用的形式
Jul 22 #Javascript
网站接入QQ登录的两种方法
Jul 22 #Javascript
防止登录页面出现在frame中js代码
Jul 22 #Javascript
You might like
Windows下部署Apache+PHP+MySQL运行环境实战
2012/08/31 PHP
DEFER怎么用?
2006/07/01 Javascript
js获取div高度的代码
2008/08/09 Javascript
JavaScript执行效率与性能提升方案
2012/12/21 Javascript
使用jquery读取html5 localstorage的值的方法
2013/01/04 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
2013/01/25 Javascript
Javascript通过overflow控制列表闭合与展开的方法
2015/05/15 Javascript
基于jQuery的ajax方法封装
2016/07/14 Javascript
jQuery插件扩展操作入门示例
2017/01/16 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
深入理解Vue transition源码分析
2017/07/30 Javascript
vue-resource拦截器设置头信息的实例
2017/10/27 Javascript
Angular2+如何去除url中的#号详解
2017/12/20 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
Vue自定义全局Toast和Loading的实例详解
2019/04/18 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python代码的打包与发布详解
2014/07/30 Python
python 队列详解及实例代码
2016/10/18 Python
几行Python代码爬取3000+上市公司的信息
2019/01/24 Python
python conda操作方法
2019/09/11 Python
Python分类测试代码实例汇总
2020/07/23 Python
智利最大的网上商店:Linio智利
2016/11/24 全球购物
巴黎一票通:The Paris Pass
2018/02/10 全球购物
C语言编程练习
2012/04/02 面试题
工程造价专业大专生求职信
2013/10/06 职场文书
大学生军训自我评价分享
2013/11/09 职场文书
经典优秀个人求职信分享
2013/12/12 职场文书
师范学院毕业生求职信范文
2013/12/26 职场文书
银行职员个人的工作自我评价
2014/02/15 职场文书
公交公司毕业生求职信
2014/02/15 职场文书
房屋租赁协议书
2014/04/10 职场文书
PyQt5结合QtDesigner实现文本框读写操作
2021/06/11 Python
利用Python第三方库实现预测NBA比赛结果
2021/06/21 Python
Django框架中表单的用法
2022/06/10 Python