zoukankan      html  css  js  c++  java
  • javascript高程笔记:逻辑与和逻辑或

    逻辑与和或

    逻辑与

    当 && 前后两个操作数都是布尔值,无可厚非,同时为true才为true。与其他强类型语言不同的是,javascript逻辑与前后的操作数可以应用于任何类型。

    而且,在有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值。

    如果第一个操作数是对象,则返回第二个操作数

    2 //返回 字符串:"this is the secondObject"
     3 function LogicAnd1(){
     4                 
     5     var firstObject ={
     6         valueOf:function(){
     7             return 1;
     8         }
     9     };
    10                 
    11     var secondObject ="this is the secondObject";
    12                 
    13     return firstObject && secondObject;
    14 }

    如果第二个操作数是对象,则只有在第一个操作数的求值为true的情况下才返回该对象

     1 //firstObject 为true 返回该对象
     2 //firstObject 为false 返回false
     3 function LogicAnd2(){
     4         var secondObject ={
     5                  valueOf:function(){
     6             return 1;
     7             }
     8         };
     9                 
    10         var firstObject =false;
    11                 
    12         return firstObject && secondObject;
    13 }

    如果两个都是对象{null 也是object,此处为非null对象},则返回第二个

    1 返回第二个
    2 function LogicAnd3(){
    3         var firstObject ={myName:"first"};
    4         var secondObject ={myName:"second"};
    5 
    6         return firstObject && secondObject;
    7 }

    任意一个为null,NaN,undefined  结果为null,NaN,undefined

     1 //任意一个为null 结果为null
     2 function LogicAnd4(){
     3         var firstObject =null;
     4         var secondObject ={myName:"second"};
     5 
     6         return firstObject && secondObject;
     7 }
     8             
     9 //任意一个为Nan 结果为Nan
    10     function LogicAnd5(){
    11         var firstObject =NaN;
    12         var secondObject ={myName:"second"};
    13 
    14         return firstObject && secondObject;
    15 }
    16             
    17 //任意一个为undefined 结果为undefined
    18     function LogicAnd6(){
    19         var firstObject =undefined;
    20         var secondObject ={myName:"second"};
    21 
    22         return firstObject && secondObject;
    23 }

    逻辑或

    逻辑或同样可以应用在任意两个类型当中,其中:

    第一个为对象,则返回第一个对象

     1 function LogicOr1(){
     2         var firstObject ={
     3             valueOf:function(){
     4                 return 1;
     5             }
     6         };
     7                 
     8         var secondObject ="this is the secondObject";
     9                 
    10             return firstObject || secondObject;
    11 
    12 }

    如果第二个操作数是对象,则只有在第一个操作数的求值为false的情况下才返回该对象

     1 //firstObject 求值为false 返回该对象
     2 //firstObject 求值为true 返回firstObject
     3 function LogicOr2(){
     4     var secondObject ={
     5           valueOf:function(){
     6             return 1;
     7         }
     8     };
     9                 
    10     var firstObject =1000;
    11                 
    12     return firstObject || secondObject;
    13 
    14 }
    15             

    如果两个都是对象{null 也是object,此处为非null对象},则返回第一个

    1 function LogicOr3(){
    2     var firstObject ={myName:"first"};
    3     var secondObject ={myName:"second"};
    4     //返回第一个
    5     return firstObject || secondObject;
    6 }

    两个都为null,undefined,NaN 则结果都为以上上个值

     1 //两个为null 结果为null
     2 function LogicOr4(){
     3         var firstObject =null;
     4         var secondObject =null;
     5 
     6         return firstObject || secondObject;
     7 }
     8             
     9 //两个为Nan 结果为Nan
    10 function LogicOr5(){
    11         var firstObject =NaN;
    12         var secondObject =NaN;
    13 
    14         return firstObject || secondObject;
    15 }
    16             
    17 //两个为undefined 结果为undefined
    18 function LogicOr6(){
    19         var firstObject =undefined;
    20         var secondObject =undefined;
    21 
    22         return firstObject || secondObject;
    23 }
  • 相关阅读:
    3spring:生命周期,属性赋值,自动装配
    2spring注解:@Lazy,@Conditional,@import,FactoryBean接口
    1spring注解:@Configuration,@Bean,@ComponentScan(),@Scope
    10.spring:常用的数据库代码.....(不长使用了解即可)
    9.spring:事务管理(下):声明式事务管理
    原生JavaScript实现hasClass、addClass、removeClass、toggleClass
    表格去重复边框
    缓存工厂之Redis缓存
    【实践】Memcached实例解析
    c# is和as的区别
  • 原文地址:https://www.cnblogs.com/blogsfuh/p/6950240.html
Copyright © 2011-2022 走看看