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 "" ; 

 

posted @ 2018-05-25 17:44  bibiguo  阅读(508)  评论(0)    收藏  举报