如果笔记

如果笔记

做有价值的技术笔记

下面这两行代码有什么区别?

```javascript x = a ? b : c; x = a && b || c; ```

第1行是三目运算,很好理解,可用来简化下面这样的if-else代码: ```javascript if (a) { x = b; } else { x = c; } ``` 那么第2行翻译成if-else是什么样的呢?如下: ```javascript if (a && b) { x = b; } else { x = c; } ``` 区别也就清楚了,第1行不能保证x是一个真值,第2行除了a要为真,b也要为真才把b的值赋给x。如果要保证x是一个真值(c通常是一个默认真值),那么就用第2行。 > `&&运算`从左到右遇到假值就返回,否则返回最后一个值。`2 && 0 && 3`返回0,`2 && 1 && 3`返回3。 > > `||运算`从左到右遇到真值就返回,否则返回最后一个值。`2 || 0 || 3`返回2,`'' || 0 || 3`返回3。 > > && 优先级比 || 高。

JS, 逻辑运算符

前端

hahaboy