码迷,mamicode.com
首页 > 其他好文 > 详细

运算符_逻辑运算符

时间:2014-12-03 17:08:44      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   ar   color   使用   sp   strong   on   

逻辑运算符通常用于布尔值的操作,一般和关系运算符配合使用,有三个逻辑运算符:逻辑与(AND)、逻辑或(OR)、逻辑非(NOT)。

1.逻辑与(AND) :&&
  var box = (5 > 4) && (4 > 3) //true,两边都为 true,返回 true

bubuko.com,布布扣
如果两边的操作数有一个操作数不是布尔值的情况下,与运算就不一定返回布尔值,此时,遵循已下规则:
  1.第一个操作数是对象,则返回第二个操作数;
  2.第二个操作数是对象,则第一个操作数返回 true,才返回第二个操作数,否则返回 false;
  3.有一个操作数是 null,则返回 null;
  4.有一个操作数是 undefined,则返回 undefined。
    var box = 对象 && (5 > 4); //true,返回第二个操作数
    var box = (5 > 4) && 对象; //[object Object]
    var box = (3 > 4) && 对象; //false
    var box = (5 > 4) && null; //null
逻辑与运算符属于短路操作,顾名思义,如果第一个操作数返回是 false,第二个数不管是 true 还是 false 都返回的 false。
  var box = true && age; //出错,age 未定义
  var box = false && age; //false,不执行 age 了

2.逻辑或(OR):||
  var box = (9 > 7) || (7 > 8); //true,两边只要有一边是 true,返回 true

bubuko.com,布布扣
如果两边的操作数有一个操作数不是布尔值的情况下,逻辑与运算就不一定返回布尔值,此时,遵循已下规则:
  1.第一个操作数是对象,则返回第一个操作数;
  2.第一个操作数的求值结果为 false,则返回第二个操作数;
  3.两个操作数都是对象,则返回第一个操作数;
  4.两个操作数都是 null,则返回 null;
  5.两个操作数都是 NaN,则返回 NaN;
  6.两个操作数都是 undefined,则返回 undefined;
    var box = 对象 || (5 > 3); //[object Object]
    var box = (5 > 3) || 对象; //true
    var box = 对象 1 || 对象 2; //[object Object]
    var box = null || null; //null
    var box = NaN || NaN; //NaN
    var box = undefined || undefined; //undefined
和逻辑与运算符相似,逻辑或运算符也是短路操作。当第一操作数的求值结果为 true,就不会对第二个操作数求值了。
  var box = true || age; //true
  var box = false || age; //出错,age 未定义
我们可以利用逻辑或运算符这一特性来避免为变量赋 null 或 undefined 值。
  var box = oneObject || twoObject; //把其中一个有效变量值赋给 box


3.逻辑非(NOT):!
逻辑非运算符可以用于任何值。无论这个值是什么数据类型,这个运算符都会返回一个布尔值。它的流程是:先将这个值转换成布尔值,然后取反,规则如下:
  1.操作数是一个对象,返回 false;
  2.操作数是一个空字符串,返回 true;
  3.操作数是一个非空字符串,返回 false;
  4.操作数是数值 0,返回 true;
  5.操作数是任意非 0 数值(包括 Infinity),false;
  6.操作数是 null,返回 true;
  7.操作数是 NaN,返回 true;
  8.操作数是 undefined,返回 true;
    var box = !(5 > 4); //false
    var box = !{}; //false
    var box = !‘‘; //true
    var box = !‘Lee‘; //false
    var box = !0; //true
    var box = !8; //false
    var box = !null; //true
    var box = !NaN; //true
    var box = !undefined; //true
使用一次逻辑非运算符,流程是将值转成布尔值然后取反。而使用两次逻辑非运算符就是将值转成成布尔值取反再取反,相当于对值进行 Boolean()转型函数处理。
  var box = !!0; //false
  var box = !!NaN; //false
通常来说,使用一个逻辑非运算符和两个逻辑非运算符可以得到相应的布尔值,而使用三个以上的逻辑非运算符固然没有错误,但也没有意义。

bubuko.com,布布扣
 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
 5 <title>运算符</title>
 6 <script type="text/javascript">
 7 /*
 8     var box = (5 > 4) && (4 > 3);
 9     alert(box);//true,两边都为 true,返回 true
10 
11 
12     var box = {} && (5 > 4);
13     alert(box);//true,返回第二个操作数
14    
15     var box = (5 > 4) && {};
16     alert(box);//[object Object]
17     
18     var box = (3 > 4) && {};
19     alert(box);//false
20     
21     var box = (5 > 4) && null;
22     alert(box);//null
23 
24 
25     var box = true && age;
26     alert(box);//出错,age 未定义
27     
28     var box = false && age;
29     alert(box);//false,不执行 age 了
30 */
31 
32 
33 /*
34     var box = (9 > 7) || (7 > 8);
35     alert(box);//true,两边只要有一边是 true,返回 true
36 
37     var box = 对象 || (5 > 3);
38     alert(box);//[object Object]
39     var box = (5 > 3) || {};
40     alert(box);//true
41     var box = {} || {};
42     alert(box);//[object Object]
43     var box = null || null; 
44     alert(box);//null
45     var box = NaN || NaN; 
46     alert(box);//NaN
47     var box = undefined || undefined; 
48     alert(box);//undefined
49 
50     var box = true || age; 
51     alert(box);//true
52 
53     var box = false || age; 
54     alert(box);//出错,age 未定义
55     var box = oneObject || twoObject;
56     alert(box);//把其中一个有效变量值赋给 box
57 */
58 /*    
59     var box = !(5 > 4);
60     alert(box);//false
61     
62     var box = !{};
63     alert(box);//false
64     
65     var box = !‘‘;
66     alert(box);//true
67     
68     var box = !‘Lee‘;
69     alert(box);//false
70     
71     var box = !0;
72     alert(box);//true
73     
74     var box = !8;
75     alert(box);//false
76     
77     var box = !null;
78     alert(box);//true
79     
80     var box = !NaN;
81     alert(box);//true
82     
83     var box = !undefined;
84     alert(box);//true
85 
86 
87     var box = !!0;
88     alert(box);//false
89     
90     var box = !!NaN;
91     alert(box);//false
92 */
93 </script>
94 </head>
95 
96 <body>
97 欢迎来到javascript的世界
98 </body>
99 </html>
bubuko.com,布布扣

运算符_逻辑运算符,布布扣,bubuko.com

运算符_逻辑运算符

标签:style   blog   http   ar   color   使用   sp   strong   on   

原文地址:http://www.cnblogs.com/LO-ME/p/3580987.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!