JavaScript知识点总结(四)之逻辑OR运算符详解


Posted in Javascript onMay 31, 2016

在JavaScript中,逻辑OR运算符用||表示

var bTrue = true;
var bFalse = false;
var bResult = bTrue || bFalse;

下面的真值表描述了逻辑AND运算符的行为:

JavaScript知识点总结(四)之逻辑OR运算符详解

在JavaScript中,0,"",false,null,undefined,NaN均表示false

可以用如下的代码证明:

<script type="text/javascript">
var bFalse = false;//bool类型
var strEmpty = "";//空字符串
var iZero = ;//数是
var oNull=null;//null
var oUndefined;//undifined
var oNaN=NaN;//NaN
/*
判断JavaScript 变量的 Boolean 值时,也可以使用逻辑 NOT 运算符。这样做需要在一行代码中使用两个 NOT 运算符。
无论运算数是什么类型,第一个 NOT 运算符返回 Boolean 值。第二个 NOT 将对该 Boolean 值求负,从而给出变量真正的 Boolean 值。
*/
document.write("<PRE>");
document.writeln("布尔数false的逻辑值是 " + (!!bFalse));
document.writeln("空字符串(\"\")的逻辑值是 " + (!!strEmpty));
document.writeln("数字的逻辑值是 " + (!!iZero));
document.writeln("NaN的逻辑值是 :" + (!!oNaN));
document.writeln("null的逻辑值是 " + (!!oNull));
document.writeln("undefined的逻辑值是 " + (!!oUndefined));
document.write("</PRE>");
</script>

运行结果:

JavaScript知识点总结(四)之逻辑OR运算符详解 

JavaScript的逻辑 OR 运算也是简便运算,对于逻辑 OR 运算符来说,如果第一个运算数值为 true,就不再计算第二个运算数,如果某个运算数不是 Boolean 值,逻辑 OR 运算并不一定返回 Boolean 值,逻辑||的运算规则如下:

1.如果一个运算数是对象,另一个是 Boolean 值,返回该对象。

2.如果两个运算数都是对象,返回第一个对象。

3.如果某个运算数是 null,返回 null。

4.如果某个运算数是 NaN,返回 NaN。

5.如果某个运算数是 undefined,发生错误。

对于这些运算规则,没有必要死记硬背,因为在JavaScript中,可以使用逻辑Not运算符来判断JavaScript变量的Boolean值,判断的方式就是"!!变量名",例如:

使用逻辑Not运算符来判断JavaScript变量的Boolean值

<script type="text/javascript">
var bFalse = false;//运算数是bool类型的数
var sRed = "red";//运算数是字符串
var iZero = ;//运算数是
var iThreeFourFive = ;//运算数是 以外的任何数字
var oObject = new Object();//对象
var oNull=null;//运算数是null
var oUndefined;//运算数是undifined
var oNaN=parseInt("abc");//使用parseInt方法把尝试字符串abc转换成整数,因为abc不是数字,因此是转不了的,所以返回的结果就是NaN
/*
判断JavaScript 变量的 Boolean 值时,也可以使用逻辑 NOT 运算符。这样做需要在一行代码中使用两个 NOT 运算符。
无论运算数是什么类型,第一个 NOT 运算符返回 Boolean 值。第二个 NOT 将对该 Boolean 值取反,从而给出变量真正的 Boolean 值。
*/
document.write("<PRE>");
document.writeln("布尔数false 的逻辑值是 " + (!!bFalse));
document.writeln("字符串sRed 的逻辑值是 " + (!!sRed));
document.writeln("数字 的逻辑值是 " + (!!iZero));
document.writeln("数字 的逻辑值是 " + (!!iThreeFourFive));
document.writeln("对象Object 的逻辑值是 " + (!!oObject));
document.writeln("NaN的逻辑值是 :" + (!!oNaN));
document.writeln("null 的逻辑值是 " + (!!oNull));
document.writeln("undefined 的逻辑值是 " + (!!oUndefined));
document.write("</PRE>");
</script>

判断结果:

JavaScript知识点总结(四)之逻辑OR运算符详解

逻辑||运算符测试脚本:

<script type="text/javascript">
document.write("<PRE>");
/*JavaScript中的||将返回第一个不为false的那个值(对象亦可)或者最后一个值(如果全部都为false的话)*/
var a=;
var b=;
var c=a||b;//在JavaScript中,非的数字就代表true,就代表false
document.writeln("a=,b=,c=a||b的结果是:"+c);//结果为,返回第一个不为false的那个值,所以值是
var bFalse=false;
var bFalse=false;
var num=;//代表false
var result=bFalse||bFalse||num;
document.writeln("bFalse=false,bFalse=false,num=,result=bFalse||bFalse||num的结果是:"+num);//如果全部都为false的话,返回最后一个值,因此结果是
/*如果一个运算数是对象,另一个是 Boolean 值,返回该对象。*/
var obj = new Object();
var bTrue=true;
var bFalse=false;
document.writeln("obj||bTrue的结果是:"+(obj||bTrue));//返回object
document.writeln("bTrue||obj的结果是:"+(bTrue||obj));//返回true,逻辑 OR 运算也是简便运算。对于逻辑 OR 运算符来说,如果第一个运算数值为 true,就不再计算第二个运算数。
document.writeln("obj||bFalse的结果是:"+(obj||bFalse));//返回object
document.writeln("bFalse||obj的结果是:"+(bFalse||obj));//返回object
/*如果两个运算数都是对象,返回第一个对象*/
var obj = new Object();
var obj = new Object();
document.writeln("obj==(obj||obj)的结果是:"+(obj==(obj||obj)));//结果为true
document.writeln("obj==(obj||obj)的结果是:"+(obj==(obj||obj)));//结果为false
/*如果某个运算数是 null,返回 null。*/
var c=;
var d=null;
document.writeln("d=null,null的布尔值是;"+(!!d));
document.writeln("c=,d=null,c||d的结果是:"+(c||d));
document.writeln("c=,d=null,d||c的结果是:"+(d||c));
var o=new Object();
document.writeln("o是一个对象,d=null,o||d的结果是:"+(o||d));//返回object
document.writeln("o是一个对象,d=null,d||o的结果是:"+(d||o));//返回object
var zero=;
document.writeln("zero=,d=null,zero||d的结果是:"+(zero||d));//返回null
document.writeln("zero=,d=null,d||zero的结果是:"+(d||zero));//返回
var bTrue = true;
var bResult = (bTrue || bUnknown);
/*变量 bUnknown 是未定义的。不过,由于变量 bTrue 的值为 true,bUnknown 不会被计算,因此输出的是 "true"。*/
document.writeln("bUnknown是未定义的一个变量,bResult = (bTrue || bUnknown)的结果是:"+bResult);//输出 "true"
bFalse = false;
bResult = (bFalse || bUnknown); //发生错误
document.writeln(bResult); //不会执行这一行
document.write("</PRE>");

运行结果:

JavaScript知识点总结(四)之逻辑OR运算符详解

以上内容是小编给大家介绍的JavaScript知识点总结(四)之逻辑OR运算符详解,希望对大家有所帮助!

Javascript 相关文章推荐
javascript 弹出层组件(升级版)
May 12 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
Mar 14 Javascript
JS解决url传值出现中文乱码的另类办法
Apr 08 Javascript
在Node.js应用中读写Redis数据库的简单方法
Jun 30 Javascript
详解Javascript中的Object对象
Feb 28 Javascript
RequireJS 依赖关系的实例(推荐)
Jan 21 Javascript
通过js控制时间,一秒一秒自己动的实例
Oct 25 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
Nov 02 Javascript
基于React+Redux的SSR实现方法
Jul 03 Javascript
浅谈angularJS2中的界面跳转方法
Aug 31 Javascript
javascript匿名函数中的'return function()'作用
Oct 15 Javascript
深入koa-bodyparser原理解析
Jan 16 Javascript
JS中使用apply方法通过不同数量的参数调用函数的方法
May 31 #Javascript
jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
May 31 #Javascript
利用jQuery实现CheckBox全选/全不选/反选的简单代码
May 31 #Javascript
TinyMCE汉化及本地上传图片功能实例详解
May 31 #Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
May 31 #Javascript
BootStrap创建响应式导航条实例代码
May 31 #Javascript
浅谈js中的延迟执行和定时执行
May 31 #Javascript
You might like
PHP4 与 MySQL 数据库操作函数详解
2006/10/09 PHP
php $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
2010/06/21 PHP
php ci框架中加载css和js文件失败的原因及解决方法
2014/07/29 PHP
CI框架中数据库操作函数$this-&gt;db-&gt;where()相关用法总结
2016/05/17 PHP
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
Javascript面向对象设计一 工厂模式
2011/12/20 Javascript
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
2012/01/20 Javascript
jquery弹出框的用法示例(2)
2013/08/26 Javascript
自定义的一个简单时尚js下拉选择框
2013/11/20 Javascript
jQuery实现的tab标签切换效果示例
2016/09/05 Javascript
微信小程序中单位rpx和rem的使用
2016/12/06 Javascript
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
js实现tab选项卡切换功能
2017/01/13 Javascript
H5实现仿flash效果的实现代码
2017/09/29 Javascript
浅谈Vue 数据响应式原理
2018/05/07 Javascript
Vue使用高德地图搭建实时公交应用功能(地图 + 附近站点+线路详情 + 输入提示+换乘详情)
2018/05/16 Javascript
微信小程序实现红包雨功能
2018/07/11 Javascript
vue中监听路由参数的变化及方法
2019/12/06 Javascript
jQuery操作元素的内容和样式完整实例分析
2020/01/10 jQuery
在antd中setFieldsValue和defaultVal的用法
2020/10/29 Javascript
原生JS实现京东查看商品点击放大
2020/12/21 Javascript
python定时检查启动某个exe程序适合检测exe是否挂了
2013/01/21 Python
举例讲解Python中metaclass元类的创建与使用
2016/06/30 Python
Python实现树的先序、中序、后序排序算法示例
2017/06/23 Python
python实现redis三种cas事务操作
2017/12/19 Python
python实现简单神经网络算法
2018/03/10 Python
Python基于辗转相除法求解最大公约数的方法示例
2018/04/04 Python
Python简单实现两个任意字符串乘积的方法示例
2018/04/12 Python
python2.7和NLTK安装详细教程
2018/09/19 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
2019/06/25 Python
python多进程重复加载的解决方式
2019/12/13 Python
python对象销毁实例(垃圾回收)
2020/01/16 Python
神经网络训练采用gpu设置的方式
2021/03/03 Python
局部内部类是否可以访问非final变量?
2013/04/20 面试题
公司离职证明标准格式
2014/11/18 职场文书
Mysql数据库表中为什么有索引却没有提高查询速度
2022/02/24 MySQL