通过短路技术,您可以防止对表达式的部分进行评估:
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语言的方式并不完全相同。 - Jon Hanna