day-5.5 与&&、或||、非!逻辑运算符基本概念和运用
逻辑运算符合数学逻辑运算是一样的原理,
与&&运算符: 真真为真 ,真假为假,假假为假;
1 var a = true && true ; 2 var b = true && false; 3 var c = false && false; 4 alert (a); //输出true ; 5 alert (b); //输出false; 6 alert (c); //输出false;
或||运算符:真真为真,真假为真,假假为假 ;
1 var a = true || true ; 2 var b = true || false; 3 var c = false || false; 4 alert (a); //输出true ; 5 alert (b); //输出ture; 6 alert (c); //输出false;
非!运算符:取反
1 var a = !false; 2 var b = !true; 3 console.log(a); //true; 4 console.log(b); //false
javascipt里面的逻辑运算符的作用不是拿来简单计算真假的,而是通过逻辑运算符来做流程控制的时候,
所谓流程控制,通过事件去对流程进行控制,比如流程持续执行,到某个点了,就停止等等。
而且很多时候 与、或、非 不仅限于通过boolean数据类型做逻辑判断,有时候可能是其他的数据类型。
比如:
这句代码的处理逻辑是,等号右边的 表达式,从左到右执行,遇到 假的时候 就停止,所以 执行的时候 碰到5 ,判断 5 为真,接着判断7 ,7 为真,接着遇到0,0 为假,停止,
这个运算符表达式计算结果为0。任何逻辑运算符表达式的运算结果必定是一个 boolean值,或者能代表某个boolean值得常量。
1 var a = 5 && 7 && 0 ; 2 alert (a) ;//输出0 ,0 做逻辑判断的时候等同于false.
3 var b = 3 && 7 && 9 ;
4 alert (b) ;//输出8 ,流程控制从3,一直判断的9 ,遇到假就直接返回,没遇到假就一直往下判断。
5 var c = 3 && 0 && 10 ;
6 alert (c) ; //输出0 。
逻辑运算符在做流程控制的时候逻辑上是如何实现的。
1、与&&运算符流程控制:遇到假才停。比如,在for循环中的实现;
1 var a = 2 && 0 &&10 ; 2 alert (a) ; //输出0; //与判断,遇到假才停。 3 var b = 2 && 4 && 9 ; 4 alert (b) ; //输出9; //与判断,遇到假才停,否则执行到最后返回最后的值; 5 for(var i = 0; i<10;i++){ 6 console.log(i); //输出 0,1,2,3,4,5,6,7,8,9 7 }
2、或||运算符流程控制:遇到真才停。比如,for 循环;
1 var a = 2 || 0 || false ; 2 alert (a); //输出2; 3 var i ; 4 if (i = 2 || 0 ||false){ // if条件为true的时候执行 花括号的语句。 5 alert(1); 6 }
3、与和或放在一个表达式的时候,先计算与,再计算非
1 var a = 2 || 0 && 5 ; //先计算 0 && 5,与运算,遇到假停, 得值 0 , 再计算 2|| 0 ,或运算,遇到真停,得2; 2 alert (a); //输出2;
4、非!运算符;
非运算符的表达式的数据类型无论是任何数据类型,最终返回的结果都是boolean值;
1 var a = !function(){ 2 alert (1); 3 }; 4 alert (a); //输出false;
注意:
只有非(!)运算符有强制转换成boolean值得功能,当用数字做逻辑(与、或)运算的时候,输出的还是是数字,不是boolean值。
只是这个数字在空值语句(for,if,while)里面的时候,才会被转换成boolean值来实现空值。
在做逻辑判断的时候,有6个基础数据类型的值,会被判断为false;
这6个数据之外的其他任何数据类型都被当做true,包括object。
1 false; 2 0; 3 NaN; 4 null; 5 undefined; 6 "" ;
浙公网安备 33010602011771号