js中的&&和||

几乎在所有的编程语言里都少不了逻辑与(&&),逻辑或(||)操作。在大多数语言里运算符的意思就是把多个逻辑条件连接起来确定真假,最终返回true或者false。

在js里也不例外,逻辑运算符首先会将左右操作数转化为布尔类型。在js中所有类型的值都可以转化为Boolean类型,规则如下:

Object ->true
String(非空) ->true
Number(非0)->true
Boolean(true)->true

String(空字符串)->false
Number(0)->false
Boolean(false)->false
undefined->false
null->false
NaN->false

例如:

 
上面的result = a && b && c,由于Boolean(a)为false,根据短路原则整条表达式为false,无须再判断后面b和c的值。而在js中一点非常有意思的是:逻辑运算符并非返回true或者false,而是返回能够决定整条表示式真假的最后一个值。  所以result结果为a的值0,result2结果为b的值Object。

例如一个经典的变量初始化方法: var pin = pin || {}

这样的规则可以让有些代码写的特别飘逸,当然太飘逸了可读性也会相应变差。

 

 

 

发表评论