• 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>");
    复制代码

    运行结果:

  • 相关阅读:
    .NET 中的Cache
    ASP.NET Forms身份认证
    深入浅出JavaScript (一)初识
    在线生成 Loading进度条图片网站
    放眼2011:中国管理软件四大趋势分析
    2011BI展望:移动商业智能决胜未来
    企业关注:国内BI市场将呈四大趋势发展
    安家啦
    清理SqlServer日志方法
    云计算添翼移动BI 企业决策运筹帷握
  • 原文地址:https://www.cnblogs.com/ljangle/p/12831673.html
Copyright © 2020-2023  润新知