比较运算符:
> 、>= 、<、 <=、 ==、 !=、 ===、 !==、
比较运算符的结果都为布尔值
==只比较值是否相等 而 ===比较的是值和数据类型都要相等
1 <script> 2 var a = 5,b = 10; 3 alert(a>b) //=>false 4 alert(a>=b) //=>false 5 alert(a>=5) //=>true 大于等于里面只要满足一样则都返回true 6 alert(a<b) //=>true 7 alert(a<=b) //=>true 小于等于里面只要满足一样则都返回true 8 alert(1==true) //=>true 9 alert(0==false) //=>true 把类型进行了隐式转换的比较 10 alert(0==null) //=>false 11 alert(undefined == null) //=>true undefined 和true的值是相等的 12 alert(NaN == NaN) //=>false NaN是不能进行自身比较的 13 alert(undefined === null) //=>false undefined 和 true进行恒等比较则返回false ,因为他们值相同数据类型不同 14 </script>
逻辑运算符:
&& 、|| 、!
逻辑运算符的返回结果是布尔类型
在逻辑&& 和 ||必须要求两个表达式
&&如果第一个表达式为false造成短路
||如如第一个表达式为true造成短路
1 <script> 2 //&&逻辑运算符,必须要求两个表达式 3 alert(true && true) //=>true 在逻辑&&中只要一个表达式为true则为true 4 alert(true && false) //=>false 5 alert(false && true) //=>false 这三种里只要一个为false则为false 6 alert(false && false) //=>false 7 var i = 0,j =1 8 if(i++ && j--){ //i=0 隐式转换为了false 9 alert(true) 10 }else{ //=>判断出来为false 11 alert(false) 12 } 13 alert(i) //=>因为经过i++ 所以i=1 14 alert(j) //j=>1 因为断点的原因,第一个表达式为false,不会再执行第二个表达式,所以J还是等于1 15 </script>
1 <script> 2 //||逻辑运算符,必须要求两个表达式 3 alert(true || true) //=>true 在逻辑&&中只要一个表达式为true则为true 4 alert(true || false) //=>true 5 alert(false || true) //=>true 这三种里只要一个为false则为false 6 alert(false || false) //=>false 7 var i = 1,j =1 8 if(i++ || ++j){ //i=1 隐式转换为了true 9 alert(true) 10 }else{ //=>判断出来为ture 11 alert(false) 12 } 13 alert(i) //=>因为经过i++ 所以i=2 14 alert(j) //j=>1 因为断点的原因,第一个表达式为ture,不会再执行第二个表达式,所以J还是等于1 15 </script>
1 <script> 2 //!逻辑运算符,必须要求两个表达式 3 alert(!true) //=>返回为false 4 alert(!false) //=>返回为true 以上都是取反 5 </script>