js中的布尔运算符使用介绍


Posted in Javascript onNovember 20, 2013

在之前我们讨论到布尔运算符 && 和 || 的时候,我说过它们的结果是布尔值。这样说起来有点过于简单化了。如果你用它们来计算布尔数据类型,它们确实会返回布尔值。但是它们也能用于计算其他的类型的数据,这种时候,返回的就将是其中的一个参数了。

或运算符“||” 真正做的事是这样的:它首先检查一下它左边的参数,如果转换成布尔类型的值后为true,那么就返回左边的参数,否则就返回右边的参数。 仔细想想当运算符两边都是布尔类型的值的时候,是不是这样的。为什么它这样运行?这样运行的结果其实非常实用。我们来看这个例子:

var input = prompt("What is your name?", "Kilgore Trout"); 
alert("Well hello " + (input || "dear"));

如果用户按“取消”或者直接关掉prompt对话框,input的值将是null或者“”。这两种情况下,转换成布尔类型的值都是false。那么这时候 input || “dear” 这个表达式的意思就是input有值的时候就得到input的值,否则就得到“dear”。这是一个很简单的提供一个默认值的方法。

与运算符 “&&” 的工作原理类似,但是与 “||” 正好相反。当它左边的参数转换成布尔类型的值为“false”的时候,它就返回那个值,否则返回右边的值。这两个操作符还有一个特点就是,只有在必要的时候,才会计算它右边的表达式的值。在“true || X” 这个表达式中,不管X是什么,结果都是true,所以X就不会被计算,如果X有其他的效果,那这个效果也不会产生。“false && X” 也是同样的道理。

false || alert("I'm happening!"); 
true || alert("Not me.");
Javascript 相关文章推荐
Javascript中Eval函数的使用
Mar 23 Javascript
非主流的textarea自增长实现js代码
Dec 20 Javascript
巧用jquery解决下拉菜单被Div遮挡的相关问题
Feb 13 Javascript
JS控制网页动态生成任意行列数表格的方法
Mar 09 Javascript
jQuery simplePage+AJAX plus分页插件用法实例
Feb 17 Javascript
ES6记录异步函数的执行时间详解
Aug 31 Javascript
React中使用collections时key的重要性详解
Aug 07 Javascript
详谈commonjs模块与es6模块的区别
Oct 18 Javascript
vue中$set的使用(结合在实际应用中遇到的坑)
Jul 10 Javascript
微信小程序实现星级评价效果
Dec 28 Javascript
react中使用css的7中方式(最全总结)
Feb 11 Javascript
vue组件库的在线主题编辑器的实现思路
Apr 03 Javascript
浅析hasOwnProperty方法的应用
Nov 20 #Javascript
鼠标滚轮改变图片大小的示例代码
Nov 20 #Javascript
JS画线(实例代码)
Nov 20 #Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
Nov 20 #Javascript
JS事件在IE与FF中的区别详细解析
Nov 20 #Javascript
引用 js在IE与FF之间的区别详细解析
Nov 20 #Javascript
JavaScript之IE的fireEvent方法详细解析
Nov 20 #Javascript
You might like
分页详解 从此分页无忧(PHP+mysql)
2007/11/23 PHP
轻松修复Discuz!数据库
2008/05/03 PHP
php实现图片缩略图的方法
2016/03/29 PHP
PHP实现判断数组是一维、二维或几维的方法
2017/02/06 PHP
用js判断浏览器是否是IE的比较好的办法
2007/05/08 Javascript
JavaScript 动态生成方法的例子
2009/07/22 Javascript
用jquery实现等比例缩放图片效果插件
2010/07/24 Javascript
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
JQuery文字列表向上滚动的代码
2013/11/13 Javascript
JS获取地址栏参数的几种方法小结
2014/02/28 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
2014/05/29 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
2015/10/17 Javascript
深入浅析同源策略和跨域访问
2015/11/26 Javascript
js判断图片加载完成后获取图片实际宽高的方法
2016/02/25 Javascript
JavaScript实现复制内容到粘贴板代码
2016/03/31 Javascript
JavaScript关于提高网站性能的几点建议(一)
2016/07/24 Javascript
手机端点击图片放大特效PhotoSwipe.js插件实现
2016/08/24 Javascript
轻松理解JavaScript之AJAX
2017/03/15 Javascript
使用jQuery和ajax代替iframe的方法(详解)
2017/04/12 jQuery
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
js 将canvas生成图片保存,或直接保存一张图片的实现方法
2018/01/02 Javascript
NW.js 简介与使用方法
2018/02/01 Javascript
详解PHP后期静态绑定分析与应用
2018/03/21 Javascript
vue代码分割的实现(codesplit)
2018/11/13 Javascript
jQuery Migrate 插件用法实例详解
2019/05/22 jQuery
深入解析koa之异步回调处理
2019/06/17 Javascript
Vue组件之高德地图地址选择功能的实例代码
2019/06/21 Javascript
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
Python提取支付宝和微信支付二维码的示例代码
2019/02/15 Python
pytest中文文档之编写断言
2019/09/12 Python
预备党员思想汇报范文
2014/01/11 职场文书
道德模范先进事迹
2014/02/14 职场文书
企业法人授权委托书范本
2014/09/23 职场文书
企业内部管理控制:银行存款控制制度范本
2020/01/10 职场文书
Nginx反向代理配置的全过程记录
2021/06/22 Servers
【海涛教你打dota】体验一超神发条:咱是抢盾专业户
2022/04/01 DOTA