【发布时间】:2016-05-11 22:45:54
【问题描述】:
通过短路,您可以防止对表达式的一部分进行评估:
let x = "", y = 123;
x && alert("foo"); // ""
y || alert("bar") // 123
由于逻辑运算构成表达式,您可以在函数调用或返回语句中使用它们。
但归根结底,这不过是条件分支,可以通过三元运算符轻松实现:
x ? alert("foo") : x; // ""
y ? y : alert("bar"); // 123
这更具可读性并且同样简洁。除了说明性术语之外,是否有理由利用逻辑运算符的短路特性?
【问题讨论】:
-
&&和||被设计为&和|的特殊形式,针对特定情况进行了优化。对于习惯于用布尔运算来思考的人来说,x ? y : x与x && y的可读性要差得多,还有副作用问题,而且它们与 Javascript 继承它们的 C 语言不太一样。
标签: javascript short-circuiting ternary