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

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

 var bTrue = true;var bFalse = false;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,

  可以用如下的代码证明:

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

<script type="text/javascript">var bFalse = false;//运算数是bool类型的数var sRed = "red";//运算数是字符串var iZero = 0;//运算数是0var iThreeFourFive = 345;//运算数是 0 以外的任何数字var oObject = new Object();//对象var oNull=null;//运算数是nullvar oUndefined;//运算数是undifinedvar 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("数字0 的逻辑值是 " + (!!iZero));document.writeln("数字345 的逻辑值是 " + (!!iThreeFourFive));document.writeln("对象Object 的逻辑值是 " + (!!oObject));document.writeln("NaN的逻辑值是 :" + (!!oNaN));document.writeln("null 的逻辑值是 " + (!!oNull));document.writeln("undefined 的逻辑值是 " + (!!oUndefined));document.write("</PRE>");</script>

判断结果:

  ​​

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

<script type="text/javascript">document.write("<PRE>");/*JavaScript中的||将返回第一个不为false的那个值(对象亦可)或者最后一个值(如果全部都为false的话)*/var a=2;var b=90;var c=a||b;//在JavaScript中,非0的数字就代表true,0就代表falsedocument.writeln("a=2,b=90,c=a||b的结果是:"+c);//结果为2,返回第一个不为false的那个值,所以值是2var bFalse1=false;var bFalse2=false;var num=0;//0代表falsevar result=bFalse1||bFalse2||num;document.writeln("bFalse1=false,bFalse2=false,num=0,result=bFalse1||bFalse2||num的结果是:"+num);//如果全部都为false的话,返回最后一个值,因此结果是0/*如果一个运算数是对象,另一个是 Boolean 值,返回该对象。*/var obj = new Object();var bTrue=true;var bFalse=false;document.writeln("obj||bTrue的结果是:"+(obj||bTrue));//返回objectdocument.writeln("bTrue||obj的结果是:"+(bTrue||obj));//返回true,逻辑 OR 运算也是简便运算。对于逻辑 OR 运算符来说,如果第一个运算数值为 true,就不再计算第二个运算数。document.writeln("obj||bFalse的结果是:"+(obj||bFalse));//返回objectdocument.writeln("bFalse||obj的结果是:"+(bFalse||obj));//返回object/*如果两个运算数都是对象,返回第一个对象*/var obj1 = new Object();var obj2 = new Object();document.writeln("obj1==(obj1||obj2)的结果是:"+(obj1==(obj1||obj2)));//结果为truedocument.writeln("obj2==(obj1||obj2)的结果是:"+(obj2==(obj1||obj2)));//结果为false/*如果某个运算数是 null,返回 null。*/var c=1;var d=null;document.writeln("d=null,null的布尔值是;"+(!!d));document.writeln("c=1,d=null,c||d的结果是:"+(c||d));document.writeln("c=1,d=null,d||c的结果是:"+(d||c));var o=new Object();document.writeln("o是一个对象,d=null,o||d的结果是:"+(o||d));//返回objectdocument.writeln("o是一个对象,d=null,d||o的结果是:"+(d||o));//返回objectvar zero=0;document.writeln("zero=0,d=null,zero||d的结果是:"+(zero||d));//返回nulldocument.writeln("zero=0,d=null,d||zero的结果是:"+(d||zero));//返回0var 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运算符详解相关推荐

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

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

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

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

  3. python中4j什么意思_Python学习:4.数据类型以及运算符详解

    运算符 一.算数运算: 二.比较运算: 三.赋值运算 四.逻辑运算 五.成员运算 基本数据类型 一.Number(数字) Python3中支持int.float.bool.complex. 使用内置的 ...

  4. C语言学习——运算符详解

    C语言学习--运算符详解 一.学习运算符 (1)运算对象的数目 C语言中,运算符的运算对象可以是一个,称单目运算符:运算对象也可以是两个,称双目运算符:运算对象还可以是三个,称三目运算符. (2)运算 ...

  5. JavaScript学习(四十九)—构造方法、原型、对象图解

    JavaScript学习(四十九)-构造方法.原型.对象图解

  6. JavaScript学习(四十八)—原型对象的增删改查

    JavaScript学习(四十八)-原型对象的增删改查 一.构造方法与原型对象的图解 二.型对象的增删改查 (一).什么是原型 每个函数都会有一个属性--prototype属性,这个属性都会有一个对象 ...

  7. JavaScript学习(四十七)—构造方法创建对象的不足

    JavaScript学习(四十七)-构造方法创建对象的不足 构造方法创建对象的不足 如果将所有的属性和方法都封装到构造方法中,那么在创建对象时,每个对象身上都会有独立的一份构造方法中的属性和方法. 如 ...

  8. JavaScript学习(四十六)—练习题

    JavaScript学习(四十六)-练习题 练习1 练习2

  9. JavaScript学习(四十五)—练习题

    JavaScript学习(四十五)-练习题 习题1 习题2:

最新文章

  1. python的try菜鸟_python异常处理try except过程解析
  2. 行列式计算的两种方法
  3. codeblocks如何watch数组
  4. javascript 正则表达式提取数字使用
  5. 分析android动画模块[转]
  6. .NET Core 3.0之深入源码理解Startup的注册及运行
  7. Java,Scala,Guava和Trove集合-它们可以容纳多少数据?
  8. python jpg 压缩因子_IOS图像2之jpg、png图片保存、互转、设置有损压缩因子
  9. 2019有的图纸打印出来看不清楚_CAD制图初学入门:CAD打印实用技巧
  10. java 文件大小统计工具类_Java获取文件大小,文件夹内文件个数的工具类
  11. python数字类型及运算_Python数据类型之数字(Numbers)和运算符
  12. 老项目换unicorn的大致步骤
  13. 项目管理团队建设成功经验
  14. NOD32企业版授权文件过期后的应急处理(病毒病义更新)
  15. php imagick 取得psd缩略图,php实现在新浪云中使用imagick生成缩略图并上传的方法...
  16. office 2010 在安装过程中出错
  17. CF1633D Make Them Equal(bfs + 01背包)
  18. Python作业题整理
  19. 在Windows系统中使用DIY Dodecad 2.1 分析祖源的方法
  20. 让你心动的20句励志文案

热门文章

  1. 数据结构 快速排序(详解)
  2. [Swagger2]配置Swagger
  3. Java实现线性表(顺序表,链表)
  4. java8 stream案例分析
  5. 逆向so_记一次APP的so层算法逆向(七)
  6. 【CF1230E】Kamil and Making a Stream【GCD性质】【暴力vector】
  7. UOJ#191. 【集训队互测2016】Unknown
  8. SRM614 Div1 Hard
  9. 2019 ICPC Asia Nanjing Regional
  10. 牛客题霸 [判断一个链表是否为回文结构] C++题解/答案