解释&&和||在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 相关文章推荐
jquery控制表单输入框显示默认值的方法
May 22 Javascript
AngularJS身份验证的方法
Feb 17 Javascript
JQuery控制DIV的选取实现方法
Sep 18 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
Nov 10 Javascript
使用JS代码实现点击按钮下载文件
Nov 12 Javascript
Node.js+ES6+dropload.js实现移动端下拉加载实例
Jun 01 Javascript
微信页面弹出键盘后iframe内容变空白的解决方案
Sep 20 Javascript
JavaScript命名空间模式实例详解
Jun 20 Javascript
解决layui 表单元素radio不显示渲染的问题
Sep 04 Javascript
layui按条件隐藏表格列的实例
Sep 19 Javascript
微信小程序停止其他视频播放当前视频的实例代码
Dec 25 Javascript
详解Howler.js Web音频播放终极解决方案
Aug 23 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
建站常用13种PHP开源CMS比较
2009/08/23 PHP
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
2015/03/03 PHP
PHP中抽象类和抽象方法概念与用法分析
2016/05/24 PHP
javaScript parseInt字符转化为数字函数使用小结
2009/11/05 Javascript
jquery.AutoComplete.js中文修正版(支持firefox)
2010/04/09 Javascript
关于innerHTML后丢失动态绑定的EVENT问题解决方法
2013/05/19 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
2015/04/22 Javascript
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
2016/05/19 Javascript
js获取时间函数及扩展函数的方法
2016/10/30 Javascript
Bootstrap导航条学习使用(一)
2017/02/08 Javascript
vue使用watch 观察路由变化,重新获取内容
2017/03/08 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
12条写出高质量JS代码的方法
2018/01/07 Javascript
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
layui点击按钮添加可编辑的一行方法
2018/08/15 Javascript
基于JS实现web端录音与播放功能
2019/04/17 Javascript
如何在postman中添加cookie信息步骤解析
2020/06/30 Javascript
js实现日历
2020/11/07 Javascript
javascript中导出与导入实现模块化管理教程
2020/12/03 Javascript
[00:27]DOTA2荣耀之路2:Patience from zhou!
2018/05/24 DOTA
在Django中限制已登录用户的访问的方法
2015/07/23 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
Python实现最大子序和的方法示例
2019/07/05 Python
Python字符串的修改方法实例
2019/12/19 Python
Django-rest-framework中过滤器的定制实例
2020/04/01 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
2021/02/03 Python
Talbots官网:美国成熟女装品牌
2019/11/15 全球购物
俄罗斯厨房产品购物网站:COOK HOUSE
2021/03/15 全球购物
工地门卫岗位职责
2013/12/30 职场文书
公司门卫的岗位职责
2014/02/19 职场文书
跟单业务员岗位职责
2014/03/08 职场文书
公司离职证明标准格式
2014/11/18 职场文书
2014年民警工作总结
2014/11/25 职场文书
你知道哪几种MYSQL的连接查询
2021/06/03 MySQL
React如何创建组件
2021/06/27 Javascript
GTX1660显卡搭配显示器推荐
2022/04/19 数码科技