解释&&和||在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 相关文章推荐
prototype Element学习笔记(篇一)
Oct 26 Javascript
JQuery 无废话系列教程(一) jquery入门 [推荐]
Jun 23 Javascript
用js做一个小游戏平台 (一)
Dec 29 Javascript
js弹出div并显示遮罩层
Feb 12 Javascript
jquery中EasyUI使用技巧小结
Feb 10 Javascript
javascript实现禁止复制网页内容汇总
Dec 30 Javascript
javaScript canvas实现(画笔大小 颜色 橡皮的实例)
Nov 28 Javascript
VuePress 静态网站生成方法步骤
Feb 14 Javascript
Vue混入mixins滚动触底的方法
Nov 22 Javascript
JavaScript获取当前url路径过程解析
Dec 27 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
Aug 08 Javascript
uin-app+mockjs实现本地数据模拟
Aug 26 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小经验:解析preg_match与preg_match_all 函数
2013/06/29 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
2014/06/26 PHP
调试PHP程序的多种方法介绍
2014/11/06 PHP
PHP实现简单汉字验证码
2015/07/28 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
PHP进阶学习之类的自动加载机制原理分析
2019/06/18 PHP
PHP实现随机发放扑克牌
2020/04/21 PHP
JavaScript 序列化对象实现代码
2009/12/18 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
最精简的JavaScript实现鼠标拖动效果的方法
2015/05/11 Javascript
Javascript设计模式之观察者模式(推荐)
2016/03/29 Javascript
JS绘制微信小程序画布时钟
2016/12/24 Javascript
详谈js中数组(array)和对象(object)的区别
2017/02/27 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
ES6数组的扩展详解
2017/04/25 Javascript
js自定义弹框插件的封装
2020/08/24 Javascript
react-native DatePicker日期选择组件的实现代码
2017/09/12 Javascript
vue获取data数据改变前后的值方法
2019/11/07 Javascript
JS性能优化实现方法及优点进行
2020/08/30 Javascript
python 实现数字字符串左侧补零的方法
2018/12/04 Python
在linux下实现 python 监控usb设备信号
2019/07/03 Python
对python3中的RE(正则表达式)-详细总结
2019/07/23 Python
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
Python基础之字典常见操作经典实例详解
2020/02/26 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
2020/05/18 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
2020/06/11 Python
python 解决pycharm运行py文件只有unittest选项的问题
2020/09/01 Python
Python urllib3软件包的使用说明
2020/11/18 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
String和StringBuffer的区别
2015/08/13 面试题
三维科技面试题
2013/07/27 面试题
领导班子四风对照检查材料范文
2014/09/27 职场文书
前台接待员岗位职责
2015/04/15 职场文书
关于观后感的作文
2015/06/18 职场文书
Oracle 区块链表创建过程详解
2021/05/15 Oracle