【发布时间】:2015-01-11 05:06:57
【问题描述】:
我是一位经验丰富的开发人员,但我刚刚遇到了一个问题,我花了一段时间才弄清楚并正在寻找解释。我依赖于短路并且花费了比我愿意承认的调试更多的时间。如果这属于另一个 Stack Exchange 网站,请告知。
我希望以下结果为假,但它通过了:
(false && true || true) => true
好像它被解释为这样:
((false && true) || true) => true
...但解决方案是这样的:
(false && (true || true)) => false
为什么false不短路第一个例子中的操作?是否有某种我不知道的前瞻性?
解决方案摘要:对于那些(像我一样)从不知道条件运算符与数学运算符具有相似优先级的人 - 隐含括号的相同概念适用:
3 * 2 + 1 => (3 * 2) + 1 => 7
false && true || true => (false && true) || true => true
【问题讨论】:
标签: javascript conditional-statements short-circuiting