1 <script>
 2     /****45页
 3         1 逻辑与操作可以应用于任何类型的操作数,而不仅仅是布尔值!
 4         2 在有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值,此时,它遵循下列规则:
 5     ***/
 6     
 7     //如果第一个操作数是对象,则返回第二个操作数,测试两个变量都声明定义的情况下;
 8      var ary1=[];
 9      var num1=false;
10      var result1=( ary1&&num1 );
11      console.log( '如果第一个操作数是对象,则返回第二个操作数: '+result1 ); //输出10;
12      
13      //如果第一个操作数是对象,则返回第二个操作数,测试一个变量只声明;
14      var ary2=[];
15      var num2;
16      var result2=( ary2&&num2 );
17      console.log( '如果第一个操作数是对象,则返回第二个操作数: '+ result2 ); //输出undefined;
18      
19      //如果两个操作数是对象,则返回第二个操作数;
20      var aryA=['数组1'];
21      var aryB=['数组2'];
22      var result3=( aryA&&aryB );
23      console.log('如果两个操作数是对象,则返回第二个操作数: '+ result3 ); //输出数组2;
24      
25      //如果有一个操作数是null,则返回null;
26      var aryC=null;
27      var num3=10;
28      var result4=( num3&&aryC ); 
29      console.log('如果有一个操作数是null,则返回null: '+result4); //输出null
30      
31      //如果有一个操作数是NaN,则返回NaN
32      var num4=10;
33      var num5=10-'a';
34      var result5=num4&&num5;
35      console.log( '如果有一个操作数是NaN,则返回NaN: '+result5 ); //输出NaN
36      
37      //如果有一个操作数是undefined,则返回undefined
38      var num6=10;
39      var num7;
40      var result6=num6&&num7;
41      console.log( '如果有一个操作数是undefined,则返回undefined: '+result6 ); //输出undefined
42      
43      //两个数据的值分别是0和1的输出结果
44      var num8=0;
45      var num9=1;
46      var result7=num8&&num9;
47      console.log( '两个变量的值分别是1和0的结果: '+result7 ); //输出0
48      
49      //两个数据的值分别是数字类型,且是大于1的正数
50      var numA=10;
51      var numB=12;
52      var result8=num8&&num9;
53      console.log( '两个数据的值分别是数字类型,且是大于1的正数: '+result8 ); //输出0
54      
55      //两个数据的值分别是数字类型,赋值都是1
56      var numC=1;
57      var numD=1;
58      var result9=numC&&numD;
59      console.log( '两个数据的值分别是数字类型,且是大于1的正数: '+result9 ); //输出1
60      
61      //不能在逻辑与操作符中使用没有预解释的变量!
62      /**
63          为什么报错(理解逻辑与):在下面的代码中,当执行逻辑与操作时会发生错误,因为变量someUndefinedVariable没有声明,由于变量found的值是true,所以逻辑与操作符会继续对变量someUndefinedVariable求值.但someUndefinedVariable尚未定义,因此就导致错误,这说明不能在逻辑与操作中使用未定义的值.
64      **/
65      var found=true;
66     // var result_10=( found&&someUndefinedVariable );
67      //console.log(result_10); // someUndefinedVariable is not defined,报错
68      console.log('报错行,已经注释了:不能在逻辑与操作符中使用没有预解释的变量')
69      
70      //理解逻辑与的短路操作
71      /**
72          在这个例子中,会输出false,无论变量someUndefinedVariable有没有定义,也永远不会对它求值,因为第一个操作数的值是false,而这也就意味着逻辑与操作的结果必定是false,
73         根本就用不着再对&&右侧的操作数求值了.在使用逻辑与操作符时要始终铭记它是一个短路操作.
74      **/
75      var lost=false;
76      var result_11=( lost&&someUndefinedVariable );
77      console.log('在使用逻辑与操作符时要始终铭记它是一个短路操作: '+result_11); //false
78      
79      //如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况下才会返回该对象
80      var str1='aaa'; //如果是一个空的字符串,输出是空,没有内容输出
81      var ary3=['这个一个数组'];
82      var result_12=(str1&&ary3);
83      console.log('如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况下才会返回该对象: '+result_12) ;;//输出:这是一个数组
84      
85      /***********
86          var result=true&&false;
87         逻辑与的真值表:
88         第一个操作数true, 第二个操作数true, 结果是true;
89         第一个操作数true, 第二个操作数false, 结果是false;
90         第一个操作数false, 第二个操作数true, 结果是false;
91         第一个操作数false, 第二个操作数false, 结果是false;
92 v     ***********************/
93 </script>

 

 posted on 2015-05-10 20:33  gupeng1988  阅读(131)  评论(0)    收藏  举报