逻辑与操做能够应用于任何类型的操做数,而不单单是布尔值。在有一个操做数不是布尔值的状况下,逻辑与操做就不必定返回布尔值;此时,它遵循下列规则:对象
若是第一个操做数是对象,则返回第二个操做数;undefined
若是第二个操做数是对象,则只有在第一个操做数的求值结果为true的状况下才会返回该对象;
若是两个操做数都是对象,则返回第二个操做数;
若是有一个操做数是null,则返回null;
若是有一个操做数是NaN,则返回NaN;
若是有一个操做数是undefined,则返回undefined。
逻辑与操做属于短路操做,即若是第一个操做数可以决定结果,那么就不会再对第二个操做数求值。对于逻辑与操做而言,若是第一个操做数是false,则不管第二个操做数是什么值,结果都再也不多是true了。
与逻辑与操做类似,若是有一个操做数不是布尔值,逻辑或也不必定返回布尔值;此时,它遵循下列规则:
若是第一个操做数是对象,则返回第一个操做数;
若是第一个操做数的求值结果为false,则返回第二个操做数;
若是两个操做数都是对象,则返回第一个操做数;
若是两个操做数都是null,则返回null;
若是两个操做数都是NaN,则返回NaN;
若是两个操做数都是undefined,则返回undefined。
与逻辑与操做符类似,逻辑或操做符也是短路操做符。也就是说,若是第一个操做数的求值结果为true,就不会对第二个操做数求值了。