"与" or "或"你了解多少

2018-06-01  本文已影响0人  Sonwmarks

与或 你真的了解吗?

&& || 在表达式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

上一篇 下一篇

猜你喜欢

热点阅读