ES中所述:
如果某个运算数不是原始的 Boolean 型值,逻辑 AND 运算并不一定返回 Boolean 值:
代码:
var a = {
name: 'a'
};
console.log(true && a); //- Object {name: "a"}
console.log(a && true); //- true
有人可以帮解释下为什么第二个不是输出a吗
是短路的原因的。他是先左后右的计算值的并且表达式的值等于最后一个值。
如果是false或者0就会直接返回false/2了不会计算右表达式的值
但是第一个值是true照理应该判断第二个值才对呀
@小卫卫九块九: 你说的是或的情况,与的情况是都要走的
@吴瑞祥: 所以返回的总是第二个值而不是两个值中非Bool的那个是吗?
@小卫卫九块九: 是的