JavaScript学习总结(四)——逻辑OR运算符详解

  在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>

运行结果:

  

  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>");

运行结果:

原文地址:https://www.cnblogs.com/ronghua/p/10201500.html

时间: 2024-11-08 16:35:48

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

JavaScript逻辑and运算符详解

一.AND详解: 在JavaScript中,逻辑 AND 运算符用双和号(&&)表示. 需要说明的是:逻辑AND运算的运算数可以是任何类型的,不止是Boolean值,如果某个运算数不是原始的Boolean型值,逻辑AND运算并不一定返回Boolean值. 逻辑AND运算符的运算行为如下: 如果一个运算数是对象,另一个是 Boolean 值,返回该对象. 如果两个运算数都是对象,返回第二个对象. 如果某个运算数是 null,返回 null. 如果某个运算数是 NaN,返回 NaN. 如果某个

JavaScript逻辑not运算符详解

在JavaScript 中,逻辑NOT运算符与C和Java中的逻辑 NOT 运算符相同,都由感叹号(!)表示.与逻辑 OR 和逻辑 AND 运算符不同的是,逻辑 NOT 运算符返回的一定是 Boolean 值. 逻辑 NOT 运算符的行为如下: 如果运算数是对象,返回 false 如果运算数是数字 0,返回 true 如果运算数是 0 以外的任何数字,返回 false 如果运算数是 null,返回 true 如果运算数是 NaN,返回 true 如果运算数是 undefined,发生错误 <sc

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

最近再写ES6的文章时候发现自己对Object.assign()方法不太了解,之前也没有接触过所以就就查阅了相关的资料,为了自己以后肯能会用到以及对知识进行巩固,所以在这里记录下自己学习的点点滴滴,毕竟好记性不如然笔筒,废话不多说,直接上干货. 官方解释:Object.assign方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象.它将返回目标对象. 语法:Object.assign(target,...sources) 参数: target:目标对象 sources:源对象 返回值:

JAVA学习笔记(四十六)- 内部类详解

成员内部类 /* * 内部类 * 定义在另一个类中的类,称为内部类Inner Class * 包含内部类的类,称为外部类Outer Class * * 应用场合:在窗体程序中进行事件处理 * * 分类: * 成员内部类 * 局部内部类 * 静态内部类 * 匿名内部类 * * 成员内部类 * 1.在外部类中访问内部类,可以访问内部类中的所有成员,包含private修饰的 * 2.在外部类外访问内部类,不能访问内部类中的private修饰的成员 * 3.在内部类中访问外部类,直接访问,如果内部类和外

JavaScript学习总结(四)——jQuery插件开发与发布

JavaScript学习总结(四)--jQuery插件开发与发布 目录 一.插件开发基础 1.1.$.extend 1.1.1.扩展属性或方法给jQuery 1.1.2.扩展对象 1.2.$.fn.extend 1.3.$.fn 二.插件开发 2.1.jQuery插件开发基本模式 2.2.获取上下文 2.3.第一个jQuery插件 2.4.链式编程 2.5.参数与默认值 2.5.1.默认值 2.5.2.参数对象 2.5.2.参数类型 2.6.命名空间与面向对象 2.7.插件与关联的CSS 2.8

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

javascript使用两个逻辑非运算符(!!)的原因:关于逻辑非运算符的使用这里就不用说了,比较简单,如果不了解可以参阅javascript的逻辑运算符一章节.在有些代码中可能大家可能会注意到有些地方使用了两个逻辑非运算符,第一感觉就是没有必要,比如操作数是true的话,使用两个逻辑非的返回值还是true,好像多此一举的行为,其实如果深究起来并非如此.先看一段代码实例: grep:function(elems,callback,inv ) { var ret=[],retVal; inv=!!

Spring4.0MVC学习资料,Controller中的方法详解和使用(四)

在以前,mvc的框架,基本上就是struts框架了.但是现在不一样了.springmvc出来了.spring的mvc框架不亚于struts了,springmvc出来了,我们有了更多的选择. Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还可以是 Struts 这样的 We

javascript中undefined和null的区别详解

一.问题的由来 永远不要直接使用undefined进行变量判断使用字符串"undefined"对变量进行判断 这里,undefined是原始值,在JS中undefined出现只有两种情况,一种是变量未定义.一种是定义了变量,但是没有赋值. 如果这个地方person未定义,那么利用person===undefined全等判断就会报错,person未定义但是如果使用typeof来判断,那么就不会报错了. ep: alert(person == undefined);//报错 person

zerglurker的C语言教程009——运算符详解(一)

在之前几节我们讲过数据类型.讲过函数.讲过代码执行顺序以及一些添加简单函数的方法. 这一节我们将着重讲讲运算符.包括运算符的含义以及优先级的概念 在C语言中,以下运算符是被公认的: C/C++语言运算符详解 优先级 运算符 名称以及含义 运算目 使用示例 结合方向 可否重载 附加说明 无 () 圆括弧 单目 (表达式) 无 否 括弧内的表达永远先计算 无 dynamic_cast<>() 类型动态转化 单目 dynamic_cast<目标类型>(源) 无 否 C++专有,不能转换返