javascript中逻辑运算符总结
Posted 94-lucky
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript中逻辑运算符总结相关的知识,希望对你有一定的参考价值。
逻辑运算符在编程中的作用很大,有时可以使复杂的判断语句被一句话来代替,可以使代码看起来瞬间高大上。
1.逻辑与 &&
true=true && true;
false=false && true;
false=true && false;
false=false && false;
var a=1; var c=2; var b=a++ && a--; var d=a-- && a++; var e=a-- && a--; var f=a++ && (c-=2); var g=(c-=2) && a++; var h=(a--) && (c-=2); var i=(c-2) && a--; console.log(b,d,e,f,g,h,i) 结果:2 0 0 0 0 -4 0 var m=2; var n=3; var j=m++ && m--; var k=m++ && n--; console.log(m,n) 结果: 3 2
总结:
1).逻辑与中,同为正时,若对象相同,则会将第一个运算结果返回到前面变量。
若对象不相同,则会将第二个运算结果返回到前面变量。
2)逻辑与中,一正一负时,本人还有不懂得地方,有研究透彻的可以分享下。
2.逻辑或 ||
true= true || false
true=false || true;
true=true || true;
false =false || false;
var a=5; var b=a-- || a++; console.log(b,a); 结果: 5 4
总结;
1)逻辑或的关系就是如果两边有结果转换为布尔值时是true,就把这个值返回,都为ture,返回前面的运算结果。
如果两个都是false时,返回第二个false.
2) 先赋值,后运算。
应用:在实际的项目中,我们经常用逻辑或来给变量赋值。例如:
var obj; obj= obj || {}; if(!obj){ obj={}; }
这两种方法的功能是一样的,但是第一种是不是看起来要简单,并且高大上一些呢。在来个例子:
bn.onclick=function(e){ e=e || window.event; } bn.onclick=function(e){ if(!e){ e=window.event; } }
可以很明显的感觉到第一种方法要比较好。
3.逻辑非 !
! 取逻辑反,先隐式转换布尔值,然后取反
console.log(![]==false); console.log(![]===false); 结果:true true
解释:对象不能转换为字符串,console.log(String(obj(a:1,b:2)))--->[object,Object],数组可以转换为字符串,console.log(String([1,2,3]))--->1,2,3,
空数组[]--->"", ""==false==0 所以[]==false; 如果是这样的话,那么上面的运行的结果就是错的。到底是怎么回事呢?
“ ! 取逻辑反,先隐式转换布尔值,然后取反”,这句话很重要,在前面我总结的,只有空字符(""),0,false,undefined,null,NAN是false,其余的都是true,所以[]先隐式转换为true,然后![]===false
以上是关于javascript中逻辑运算符总结的主要内容,如果未能解决你的问题,请参考以下文章