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 相关文章推荐
Javascript学习笔记2 函数
Jan 11 Javascript
解决javascript:window.close()在chrome,Firefox下失效的问题
May 07 Javascript
js跨域访问示例(客户端/服务端)
May 19 Javascript
jQuery实现不断闪烁文字的方法
May 15 Javascript
Javascript removeChild()删除节点及删除子节点的方法
Dec 27 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
May 25 Javascript
js中 计算两个日期间的工作日的简单实例
Aug 08 Javascript
jQuery插件Validation表单验证详解
May 26 jQuery
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
Sep 25 Javascript
JS调用安卓手机摄像头扫描二维码
Oct 16 Javascript
原生javascript制作的拼图游戏实现方法详解
Feb 23 Javascript
vue 如何从单页应用改造成多页应用
Oct 23 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
一个经典的PHP文件上传类分享
2014/11/18 PHP
PHP删除指定目录中的所有目录及文件的方法
2015/02/26 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
PHP实现图片压缩
2020/09/09 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
CL vs ForZe BO5 第五场 2.13
2021/03/10 DOTA
escape、encodeURI 和 encodeURIComponent 的区别
2009/03/02 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
2013/12/10 Javascript
异步动态加载JS并运行(示例代码)
2013/12/13 Javascript
javascript中style.left和offsetLeft的用法说明
2014/03/07 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
Javascript 运动中Offset的bug解决方案
2014/12/24 Javascript
js删除局部变量的实现方法
2016/06/25 Javascript
JS动态给对象添加属性和值的实现方法
2016/10/21 Javascript
jQuery实现的文字逐行向上间歇滚动效果示例
2017/09/06 jQuery
vue 自定义全局方法,在组件里面的使用介绍
2018/02/28 Javascript
小程序实现单选多选功能
2018/11/04 Javascript
微信小程序使用setData修改数组中单个对象的方法分析
2018/12/30 Javascript
基于vue实现探探滑动组件功能
2020/05/29 Javascript
[51:52]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
Python使用正则表达式过滤或替换HTML标签的方法详解
2017/09/25 Python
Django数据库表反向生成实例解析
2018/02/06 Python
pandas去重复行并分类汇总的实现方法
2019/01/29 Python
pytorch如何冻结某层参数的实现
2020/01/10 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
如何查看浏览器对html5的支持情况
2020/12/15 HTML / CSS
拉夫劳伦爱尔兰官方网站:Ralph Lauren爱尔兰
2020/04/10 全球购物
.NET remoting的两种通道是什么
2016/05/31 面试题
党员干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
工商局所长四风自我剖析及整改措施
2014/10/26 职场文书
评先进个人材料
2014/12/29 职场文书
奖学金感谢信
2015/01/21 职场文书
详解 TypeScript 枚举类型
2021/11/02 Javascript
redis lua限流算法实现示例
2022/07/15 Redis
vue递归实现树形组件
2022/07/15 Vue.js