Javascript 中的 && 和 || 使用小结


Posted in Javascript onApril 25, 2010

普通情况下的 && 和 || 比较简单,这里不进行讨论。

准备两个对象用于下面的讨论。

var alice = { 
name: "alice", 
toString: function () { 
return this.name; 
} 
} var smith = { 
name: "smith", 
toString: function () { 
return this.name; 
} 
}

在 javascript 中,对于 && 不仅仅可以用于 boolean 类型,也不仅仅返回 Boolean 类型的结果。
l 如果第一个操作数是 Boolean 类型,而且值为 false ,那么直接返回 false。
l 如果第一个操作数是 Boolean 类型,而且值为 true,另外一个操作数是 object 类型,那么将返回这个对象。
l 如果两个操作数都是 object 类型,那么,返回第二个对象。
l 如果任何一个操作数是 null,那么,返回 null。
l 如果任何一个操作数是 NaN,那么返回 NaN。
l 如果任何一个操作数是 undefinded,那么返回 undefined。

alert(false && alice); // false
alert(true && alice); // alice

alert(alice && smith); // smith
alert(smith && alice); // alice

alert(null && alice); // null
alert(NaN && alice); // NaN
alert(undefined && alice); // undefined
alert(alice && undefined); // undefined

对于 || 来说,同样也不仅仅用于 Boolean 类型,也不仅仅返回 Boolean 类型的结果。
事实上,null、undefined、NaN 都将被看作 false。而对象被当作 true。

l 如果第一个操作数是 boolean 类型,而且值为 true, 那么,直接返回 true。
l 如果第一个操作数是 Boolean 类型,而且值为 false ,第二个操作数为 object,那么返回 object 对象。
l 如果两个操作数都是 object 类型,那么返回第一个对象。
l 如果两个操作数都是 null,那么,返回 null。
l 如果两个操作数都是 NaN,那么返回 NaN。
l 如果两个操作数都是 undefined,那么,返回 undefined。
alert(false || alice);         // alice

alert(true || alice);          // true

alert(alice || smith);         // alice

alert(smith || alice);         // smith

alert(null || alice);       // alice

alert(alice || null);       // alice

alert(null || null);        // null

alert(NaN || alice);        // alice

alert(alice || NaN);        // alice

alert(NaN || NaN);          // NaN

alert(undefined || alice);     // alice

alert(alice || undefined);     // alice

alert(undefined || undefined); // undefined

不用搞得这么复杂 推荐大家看这部分的说明
a && b : 将a, b转换为Boolean类型, 再执行逻辑与, true返回b, false返回a
a || b : 将a, b转换为Boolean类型, 再执行逻辑或, true返回a, false返回b
转换规则:
对象为true
非零数字为true
非空字符串为true
其他为false

相关文章可以参考下面几篇,综合一下
js 与或运算符 || && 妙用
js利用与或运算符优先级实现if else条件判断表达式
javascript &&和||运算法的另类使用技巧

Javascript 相关文章推荐
多个iframe自动调整大小的问题
Sep 18 Javascript
js 字符串操作函数
Jul 25 Javascript
基于javascipt-dom编程 table对象的使用
Apr 22 Javascript
Javascript/Jquery——简单定时器的多种实现方法
Jul 03 Javascript
JS简单实现元素复制示例附图
Nov 19 Javascript
ExtJS4中的requires使用方法示例介绍
Dec 03 Javascript
JS设置cookie、读取cookie
Feb 24 Javascript
Bootstrap 实现查询的完美方法
Oct 26 Javascript
angular+bootstrap的双向数据绑定实例
Mar 03 Javascript
jquery点赞功能实现代码 点个赞吧!
May 29 jQuery
全选复选框JavaScript编写小结(附代码)
Aug 16 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
Aug 07 Javascript
js 禁用只读文本框获得焦点时的退格键
Apr 25 #Javascript
js 内存释放问题
Apr 25 #Javascript
JavaScript 对象链式操作测试代码
Apr 25 #Javascript
网页上的Javascript编辑器和代码格式化
Apr 25 #Javascript
jQuery温习篇 强大的JQuery选择器
Apr 24 #Javascript
javascript 二分法(数组array)
Apr 24 #Javascript
JS判断是否为数字,是否为整数,是否为浮点数的代码
Apr 24 #Javascript
You might like
php strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
JavaScript经典效果集锦
2010/07/06 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2012/01/03 Javascript
JavaScript的漂亮的代码片段
2013/06/05 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
javascript使用smipleChart实现简单图表
2015/01/02 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
JavaScript  cookie 跨域访问之广告推广
2016/04/20 Javascript
js实现的万能flv网页播放器代码
2016/04/30 Javascript
深入理解AngularJS中的ng-bind-html指令和$sce服务
2016/09/08 Javascript
JS中静态页面实现微信分享功能
2017/02/06 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
JS实现的四级密码强度检测功能示例
2017/05/11 Javascript
JavaScript高级函数应用之分时函数实例分析
2018/08/03 Javascript
微信小程序sessionid不一致问题解决
2019/08/30 Javascript
浅谈javascript如何获取文件后缀名
2020/08/07 Javascript
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
python编写简易聊天室实现局域网内聊天功能
2018/07/28 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
python判断计算机是否有网络连接的实例
2018/12/15 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
2019/12/09 Python
python使用信号量动态更新配置文件的操作
2020/04/01 Python
python如何进入交互模式
2020/07/06 Python
Python依赖包迁移到断网环境操作
2020/07/13 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
翻新二手苹果产品的网络领导者:Mac of all Trades
2017/12/19 全球购物
全球工业:Global Industrial
2020/02/01 全球购物
无毒社区工作方案
2014/05/23 职场文书
尊师重教演讲稿
2014/09/04 职场文书
“四风”问题整改措施和努力方向
2014/09/20 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
学校师德师风整改措施
2014/10/27 职场文书
房屋买卖协议样本
2014/11/16 职场文书
导游词之泉州崇武古城
2019/12/20 职场文书
「月刊Action」2022年5月号封面公开
2022/03/21 日漫