gpt4 book ai didi

javascript - 短路逻辑或语句,与内联三元相结合

转载 作者:太空宇宙 更新时间:2023-11-04 16:21:10 25 4
gpt4 key购买 nike

我了解在 JavaScript 中使用逻辑或运算符时短路求值的工作原理,但我遇到了一个我不完全理解的奇怪的边缘情况。

所以,这个片段按照我期望的方式工作:

const a = 'a' || 'b';

其中 a 的值为 'a'

当然,这也按照我期望的方式工作:

const a = false || 'b';

其中 a 的值为 'b'

但是,我遇到了这样奇怪的情况:

const a = true ||真实 ||真的 ? 'a':'b';

其中 a 现在的值为 'a'。我尝试过其他组合,例如:

const a = true ||假||真的 ? 'a':'b';

a 的值仍然是 'a'

另一件事要尝试是这样的:

const fn = () => true ? 'a' : 'b';
const a = true || fn();

当然,a 的值为 true,并且 fn 永远不会被调用。

这是怎么回事?

最佳答案

一个logical OR ||从左到右计算,第一个值计算为 truthy value返回,如果没有一个计算结果为 true,则返回最后一个。

在这种情况下,第一个 true 简单地计算为 true,因此整个条件返回 true:

true || true || false

因此,ternary operator 的第一个表达式被评估,在本例中 'a':

const a = true || true || true ? 'a' : 'b';

因此,a 等于 'a'

相同的逻辑适用于您列出的其他案例。

关于javascript - 短路逻辑或语句,与内联三元相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40637073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com