与或 你真的了解吗?
&& 和 || 在表达式1和表达式2之间其实是技巧的,熟练了,秒答
首先来看下&&(双与) X && Y 在这个表达式中首先计算X,并将其解释为一个布尔值:
如果这个布尔值(X的布尔值)为false,那么返回false 不再计算Y,因为"与"的条件已经失效
如果这个布尔值(X的布尔值)为true, 那么我们仍然不知道 X && Y 的值是真还是假,直到我们去计算Y ,并把它也解释为一个布尔值;不过有意思的是当X 为 true 时,整个将直接返回 Y
再来看看 ||(双或) 在 X || Y 的时候,还是首先计算X并将其解释执行一个布尔值:
如果这个布尔值(X的布尔值)为true 那么将返回X,不再计算Y 因为"或"的条件已经满足
如果这个布尔值为false 那么我们仍然不知道X || Y 是真还是假,直到我们计算 Y, 并且也把它解释为一个执行的布尔值
因此 0 || 1 的计算结果为true(1)
表达式1 && 表达式2 和 表达式1 || 表达式2 只需要判断第一个表达式的值:
||: 第一个表达式为真 ,直接返回表达式1
第一个表达式为假 ,直接返回表达式2
&&: 第一个表达式为假 ,直接返回表达式1
第一个表达式为真 ,直接返回表达式2
故 简称: 或 真1 假2 与 假1 真2
console.log(1 && false); //与 假1 真2 false
console.log(0 || NaN); //或 真1 假2 NaN
console.log(null && undefined); //与 假1 真2 null
console.log(false && null); //与 假1 真2 false
console.log(undefined || 0); //或 真1 假2 0
console.log(NaN || 1); //或 真1 假2 1
console.log(1 && null); //与 假1 真2 null
console.log(2 || NaN); //或 真1 假2 2
console.log(3 && false); //与 假1 真2 false
console.log(NaN || 0); //或 真1 假2 0
console.log(undefined && 2); //与 假1 真2 undefined
console.log(null && 3); //与 假1 真2 null
console.log(false || 7); //或 真1 假2 7
网友评论