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初学困境—js初学
Dec 29 Javascript
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
Mar 05 Javascript
AngularJS实现元素显示和隐藏的几个案例
Dec 09 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
Mar 11 Javascript
浅谈jQuery中ajaxPrefilter的应用
Aug 01 Javascript
jQuery 局部div刷新和全局刷新方法总结
Oct 05 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
Jun 21 Javascript
JavaScript中的高级函数
Jan 04 Javascript
JavaScript面试技巧之数组的一些不low操作
Mar 22 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
Aug 12 Javascript
layui 上传文件_批量导入数据UI的方法
Sep 23 Javascript
基于JavaScript获取base64图片大小
Oct 18 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
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
2016/03/07 PHP
php获取文件后缀的9种方法
2016/03/22 PHP
Yii中的relations数据关联查询及统计功能用法详解
2016/07/14 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
javascript 学习笔记(六)浏览器类型及版本信息检测代码
2011/04/08 Javascript
jquery动画1.加载指示器
2012/08/24 Javascript
JS解决url传值出现中文乱码的另类办法
2013/04/08 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
JS实现的简洁二级导航菜单雏形效果
2015/10/13 Javascript
Angular.JS内置服务$http对数据库的增删改使用教程
2017/05/07 Javascript
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
react中实现搜索结果中关键词高亮显示
2018/07/31 Javascript
bootstrap tooltips在 angularJS中的使用方法
2019/04/10 Javascript
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
[01:35]2014DOTA2西雅图邀请赛 专访狐狸妈青春献给刀塔
2014/07/08 DOTA
[47:46]完美世界DOTA2联赛 Magma vs GXR 第三场 11.07
2020/11/10 DOTA
Python 字符串中的字符倒转
2008/09/06 Python
python 多线程应用介绍
2012/12/19 Python
python虚拟环境virualenv的安装与使用
2016/12/18 Python
Python进阶之自定义对象实现切片功能
2019/01/07 Python
python与C、C++混编的四种方式(小结)
2019/07/15 Python
python excel转换csv代码实例
2019/08/26 Python
纯css实现照片墙3D效果的示例代码
2017/11/13 HTML / CSS
利用Storage Event实现页面间通信的示例代码
2018/07/26 HTML / CSS
网络、C以及其他硬件方面的面试题
2016/08/23 面试题
公司薪酬管理制度
2014/01/31 职场文书
总经理文秘岗位职责
2014/02/03 职场文书
记帐员岗位责任制
2014/02/08 职场文书
项目施工员岗位职责
2014/03/09 职场文书
大宝sod蜜广告词
2014/03/21 职场文书
代理人委托书
2014/08/01 职场文书
四风问题对照检查材料思想汇报
2014/10/07 职场文书
公司员工违纪检讨书
2015/05/05 职场文书
ECharts transform数据转换和dataZoom在项目中使用
2022/12/24 Javascript