解释&&和||在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 相关文章推荐
潜说js对象和数组
May 25 Javascript
jquery插件制作 自增长输入框实现代码
Aug 17 jQuery
jQuery基本过滤选择器使用介绍
Apr 18 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
Feb 12 Javascript
javascript初学者常用技巧
Sep 02 Javascript
手机浏览器 后退按钮强制刷新页面方法总结
Oct 09 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
May 20 jQuery
Vuejs 页面的区域化与组件封装的实现
Sep 11 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
Mar 01 Javascript
webpack打包非模块化js的方法
Oct 24 Javascript
深入浅析js原型链和vue构造函数
Oct 25 Javascript
Element Badge标记的使用方法
Jul 27 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
锁定年轻人的双倍活力 星巴克推出星倍醇即饮浓咖啡
2021/03/03 咖啡文化
使用TinyButStrong模板引擎来做WEB开发
2007/03/16 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
php实现登录tplink WR882N获取IP和重启的方法
2016/07/20 PHP
浅谈PHP进程管理
2019/03/08 PHP
RGB颜色值转HTML十六进制(HEX)代码的JS函数
2009/04/25 Javascript
jQuery MD5加密实现代码
2010/03/15 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
2013/11/29 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
2017/10/24 Javascript
node中modules.exports与exports导出的区别
2018/06/08 Javascript
Node.js模拟发起http请求从异步转同步的5种用法
2018/09/26 Javascript
使用nodejs分离html文件里的js和css详解
2019/04/12 NodeJs
ECharts地图绘制和钻取简易接口详解
2019/07/12 Javascript
微信小程序实现点击图片放大预览
2019/10/21 Javascript
jquery添加div实现消息聊天框
2020/02/08 jQuery
JQuery实现折叠式菜单的详细代码
2020/06/03 jQuery
使用TS来编写express服务器的方法步骤
2020/10/29 Javascript
[42:23]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第二场 12.10
2020/12/13 DOTA
Python生成pdf文件的方法
2014/08/04 Python
python中bisect模块用法实例
2014/09/25 Python
详解python使用Nginx和uWSGI来运行Python应用
2018/01/09 Python
Python 一句话生成字母表的方法
2019/01/02 Python
python实现二级登陆菜单及安装过程
2019/06/21 Python
用python做游戏的细节详解
2019/06/25 Python
python操作yaml说明
2020/04/08 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
2021/02/22 Python
医学院毕业生自荐信
2013/11/08 职场文书
学校师德承诺书
2014/05/23 职场文书
社区科普工作方案
2014/06/03 职场文书
营销总监岗位职责
2014/09/16 职场文书
离职感谢信
2015/01/21 职场文书
男方婚前保证书
2015/02/28 职场文书
刑事附带民事上诉状
2015/05/23 职场文书