标签:style blog http ar color 使用 sp strong on
逻辑运算符通常用于布尔值的操作,一般和关系运算符配合使用,有三个逻辑运算符:逻辑与(AND)、逻辑或(OR)、逻辑非(NOT)。
1.逻辑与(AND) :&&
var box = (5 > 4) &&
(4 > 3) //true,两边都为 true,返回 true
如果两边的操作数有一个操作数不是布尔值的情况下,与运算就不一定返回布尔值,此时,遵循已下规则:
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
如果两边的操作数有一个操作数不是布尔值的情况下,逻辑与运算就不一定返回布尔值,此时,遵循已下规则:
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
通常来说,使用一个逻辑非运算符和两个逻辑非运算符可以得到相应的布尔值,而使用三个以上的逻辑非运算符固然没有错误,但也没有意义。
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>
标签:style blog http ar color 使用 sp strong on
原文地址:http://www.cnblogs.com/LO-ME/p/3580987.html