&&在JavaScript中有三种理解:
1.当两个操作数都是布尔值的时候,&&对两个执行布尔与(AND)操作,只有在两个都是true时,才返回true。如果其中一个是false,它返回false。
x==0&&y==0 //只有在x和y都为0的时候,才返回true
2.&&可以对真值和假值进行布尔与(AND)操作。如果两个操作数都是真值,那么返回一个真值,否则,至少一个操作数是假值的话,则返回一个假值。(假值有:false、null、undefined、0、-0、NaN和"",所有其他的值包括所有对象都是真值)。
3.&&首先计算左侧的操作数。如果结果是假值,整个就是假值,这时返回左操作数的值。
左为真:计算右侧的操作数的值并将其返回作为整个表达式的计算结果:
var m={x:1};
var p=null;
o&&o.x //1:o是真值,因此返回值为o.x
p&&p.x //null:p是假值,因此将其返回,而不去计算p.x
&&的这种行为有时称做“短路”。