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

1 var bTrue = true;
2 var bFalse = false;
3 var bResult = bTrue || bFalse;

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

运算数 1 运算数 2 结果
true true true
true false true
false true true
false false false

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

  可以用如下的代码证明:

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

运行结果:

  aaarticlea/png;base64,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" alt="" />

  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值

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

判断结果:

  

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

 
 1  <script type="text/javascript">
2 document.write("<PRE>");
3 /*JavaScript中的||将返回第一个不为false的那个值(对象亦可)或者最后一个值(如果全部都为false的话)*/
4 var a=2;
5 var b=90;
6 var c=a||b;//在JavaScript中,非0的数字就代表true,0就代表false
7 document.writeln("a=2,b=90,c=a||b的结果是:"+c);//结果为2,返回第一个不为false的那个值,所以值是2
8
9 var bFalse1=false;
10 var bFalse2=false;
11 var num=0;//0代表false
12 var result=bFalse1||bFalse2||num;
13 document.writeln("bFalse1=false,bFalse2=false,num=0,result=bFalse1||bFalse2||num的结果是:"+num);//如果全部都为false的话,返回最后一个值,因此结果是0
14
15 /*如果一个运算数是对象,另一个是 Boolean 值,返回该对象。*/
16 var obj = new Object();
17 var bTrue=true;
18 var bFalse=false;
19 document.writeln("obj||bTrue的结果是:"+(obj||bTrue));//返回object
20 document.writeln("bTrue||obj的结果是:"+(bTrue||obj));//返回true,逻辑 OR 运算也是简便运算。对于逻辑 OR 运算符来说,如果第一个运算数值为 true,就不再计算第二个运算数。
21 document.writeln("obj||bFalse的结果是:"+(obj||bFalse));//返回object
22 document.writeln("bFalse||obj的结果是:"+(bFalse||obj));//返回object
23
24 /*如果两个运算数都是对象,返回第一个对象*/
25 var obj1 = new Object();
26 var obj2 = new Object();
27 document.writeln("obj1==(obj1||obj2)的结果是:"+(obj1==(obj1||obj2)));//结果为true
28 document.writeln("obj2==(obj1||obj2)的结果是:"+(obj2==(obj1||obj2)));//结果为false
29
30 /*如果某个运算数是 null,返回 null。*/
31 var c=1;
32 var d=null;
33 document.writeln("d=null,null的布尔值是;"+(!!d));
34 document.writeln("c=1,d=null,c||d的结果是:"+(c||d));
35 document.writeln("c=1,d=null,d||c的结果是:"+(d||c));
36
37 var o=new Object();
38 document.writeln("o是一个对象,d=null,o||d的结果是:"+(o||d));//返回object
39 document.writeln("o是一个对象,d=null,d||o的结果是:"+(d||o));//返回object
40
41 var zero=0;
42 document.writeln("zero=0,d=null,zero||d的结果是:"+(zero||d));//返回null
43 document.writeln("zero=0,d=null,d||zero的结果是:"+(d||zero));//返回0
44
45 var bTrue = true;
46 var bResult = (bTrue || bUnknown);
47 /*变量 bUnknown 是未定义的。不过,由于变量 bTrue 的值为 true,bUnknown 不会被计算,因此输出的是 "true"。*/
48 document.writeln("bUnknown是未定义的一个变量,bResult = (bTrue || bUnknown)的结果是:"+bResult);//输出 "true"
49
50 bFalse = false;
51 bResult = (bFalse || bUnknown); //发生错误
52 document.writeln(bResult); //不会执行这一行
53 document.write("</PRE>");
 

运行结果:

JavaScript学习总结(四)——逻辑OR运算符详解的更多相关文章

  1. JavaScript学习总结(三)——逻辑And运算符详解

    在JavaScript中,逻辑 AND 运算符用双和号(&&)表示 1 var bTrue = true; 2 var bFalse = false; 3 var bResult = ...

  2. JavaScript学习总结(二)——逻辑Not运算符详解

    在JavaScript 中,逻辑NOT运算符与C和Java中的逻辑 NOT 运算符相同,都由感叹号(!)表示.与逻辑 OR 和逻辑 AND 运算符不同的是,逻辑 NOT 运算符返回的一定是 Boole ...

  3. 零拷贝详解 Java NIO学习笔记四(零拷贝详解)

    转 https://blog.csdn.net/u013096088/article/details/79122671 Java NIO学习笔记四(零拷贝详解) 2018年01月21日 20:20:5 ...

  4. javascript学习总结之Object.assign()方法详解

    最近再写ES6的文章时候发现自己对Object.assign()方法不太了解,之前也没有接触过所以就就查阅了相关的资料,为了自己以后肯能会用到以及对知识进行巩固,所以在这里记录下自己学习的点点滴滴,毕 ...

  5. JavaScript学习总结(九)事件详解

    转自:http://segmentfault.com/a/1190000002174034 事件处理程序 在DOM中定义了一些事件, 而响应某个事件的函数就叫事件处理程序(或事件侦听器).事件处理程序 ...

  6. javascript使用两个逻辑非运算符(!!)的原因

    javascript使用两个逻辑非运算符(!!)的原因: 在有些代码中可能大家可能会注意到有些地方使用了两个逻辑非运算符,第一感觉就是没有必要,比如操作数是true的话,使用两个逻辑非的返回值还是tr ...

  7. JavaScript学习记录四

    title: JavaScript学习记录四 toc: true date: 2018-09-16 20:31:22 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...

  8. IP地址和子网划分学习笔记之《IP地址详解》

    2018-05-03 18:47:37   在学习IP地址和子网划分前,必须对进制计数有一定了解,尤其是二进制和十进制之间的相互转换,对于我们掌握IP地址和子网的划分非常有帮助,可参看如下目录详文. ...

  9. “全栈2019”Java第五十四章:多态详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

随机推荐

  1. 20145334赵文豪网络对抗Web安全基础实践

    1.SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 对于SQL注入攻击的防范,我觉 ...

  2. Duilib 实现开关按钮

    转载:http://blog.csdn.net/wuan584974722/article/details/25045737 我们在做MFC程序时候经常会一个切换式的按钮,之前我的做法是利用butti ...

  3. JAVA I/O(六)多路复用IO

    在前边介绍Socket和ServerSocket连接交互的过程中,读写都是阻塞的.套接字写数据时,数据先写入操作系统的缓存中,形成TCP或UDP的负载,作为套接字传输到目标端,当缓存大小不足时,线程会 ...

  4. Package libvirt was not found in the pkg-config search path

    关于pip安装libvirt-python的时候提示Package libvirt was not found in the pkg-config search path的问题解决方法 1.一开始以为 ...

  5. Django框架(三) 复习总结与路由控制

    知识点回顾 MTV模型 model:模型,和数据库相关的 template:模板,存放html文件,模板语法(目的是将变量如何巧妙的嵌入到HTML页面中). views:视图函数 另加urls:url ...

  6. UNIX网络编程--简介(一)【转】

    本文转载自:http://blog.csdn.net/yusiguyuan/article/details/11760187 一.概述 a) 在编写与计算机通信的程序时,首先要确定的就是和计算机通信的 ...

  7. 括号序和dfs序

    记得清北讲过括号序和dfs序,忘记了 dfs序 dfs序就是dfs的顺序,这个好记 就是在dfs遍历树的时候,将每个结点开始时记录一次,结束时记录一次 而且一个子树可以表示为连续的一段, 只有子树操作 ...

  8. JavaScript new return 类的实例化

    new初始化方法 简单没有return的就不写了 function Person() { this.name="hongda"; ; return "fffffff&qu ...

  9. 伪类:after的使用以及结合attr来添加属性的技巧

    本案例以实现侧边栏的效果为例来说明 直接上代码看效果: css <style type="text/css"> *{;;list-style: none;} ul{;t ...

  10. 51nod 1243 排船的问题(二分)

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1243 题意: 思路: 二分来做,每次贪心的把船安排到能安排的最左边即可. ...