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 相关文章推荐
jquery操作复选框checkbox的方法汇总
Feb 05 Javascript
js鼠标点击图片切换效果实现代码
Nov 19 Javascript
浅谈addEventListener和attachEvent的区别
Jul 14 Javascript
解析jQueryEasyUI的使用
Nov 22 Javascript
Javascript基础回顾之(二) js作用域
Jan 31 Javascript
JavaScrip数组删除特定元素的几种方法总结
Sep 06 Javascript
Vue父子组件之间的通信实例详解
Sep 28 Javascript
puppeteer库入门初探
Jan 09 Javascript
vue动态配置模板 'component is'代码
Jul 04 Javascript
Vue 样式切换及三元判断样式关联操作
Aug 09 Javascript
Vue按时间段查询数据组件使用详解
Aug 21 Javascript
解决antd的Form组件setFieldsValue的警告问题
Oct 29 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.MVC的模板标签系统(五)
2006/09/05 PHP
兼容性比较好的PHP生成缩略图的代码
2011/01/12 PHP
PHP学习笔记 用户注册模块用户类以及验证码类
2011/09/20 PHP
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
2016/02/19 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
2017/10/24 PHP
php layui实现前端多图上传实例
2019/07/30 PHP
初学Javascript的一些总结
2008/11/03 Javascript
jquery中获取select选中值的代码
2011/06/27 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
2013/08/02 Javascript
jQuery响应enter键的实现思路
2014/04/18 Javascript
jQuery提示效果代码分享
2014/11/20 Javascript
将页面table内容与样式另存成excel文件的方法
2015/08/05 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
2016/07/11 Javascript
常用原生js自定义函数总结
2016/11/20 Javascript
js 将input框中的输入自动转化成半角大写(税号输入框)
2017/02/16 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
2017/03/05 Javascript
bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)
2017/11/17 Javascript
jQuery实现的上传图片本地预览效果简单示例
2018/03/29 jQuery
微信小程序实现蒙版弹窗效果
2018/11/01 Javascript
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
详解JavaScript中分解数字的三种方法
2021/01/05 Javascript
python调用java模块SmartXLS和jpype修改excel文件的方法
2015/04/28 Python
Python中用altzone()方法处理时区的教程
2015/05/22 Python
Python代码缩进和测试模块示例详解
2018/05/07 Python
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
Python openpyxl读取单元格字体颜色过程解析
2019/09/03 Python
python设置随机种子实例讲解
2019/09/12 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
HTML5注册表单的自动聚焦与占位文本示例代码
2013/07/19 HTML / CSS
Html5实现文件异步上传功能
2017/05/19 HTML / CSS
雅诗兰黛加拿大官网:Estee Lauder加拿大
2019/07/31 全球购物
印刷工程专业应届生求职信
2013/09/29 职场文书
学校宣传标语
2014/06/18 职场文书
就业协议书盖章的注意事项
2014/09/28 职场文书
土建技术员岗位职责
2015/04/11 职场文书