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 }

 

posted @ 2017-06-06 10:35  Atomm  阅读(219)  评论(0编辑  收藏  举报