JavaScript 中如何计算三元运算符?
关于 JavaScript 中的三元 (? :
) 运算符,我想知道典型浏览器的 JavaScript 解释器如何计算它:
替代方案 A:
- 计算第一个操作数。
- 如果第一个操作数的结果为 true,则计算并返回第二个操作数。
- 否则,计算并返回第三个操作数。
替代方案 B:
- 评估所有三个操作数。
- 如果第一个操作数的结果为 true,则返回第二个操作数的结果。
- 否则,返回第三个操作数的结果。
方案C:
当然,如果方案A和方案B都没有准确描述三元运算符的工作原理,请解释一下它是如何工作的。
Regarding the ternary (? :
) operator in JavaScript, I would like to know how it is evaluated by a typical browser's JavaScript interpreter:
Alternative A:
- Evaluate the first operand.
- If the result of the first operand is true, then evaluate and return the second operand.
- Else, evaluate and return the third operand.
Alternative B:
- All three operands are evaluated.
- If the result of the first operand is true, return the result of the second operand.
- Else, return the result of the third operand.
Alternative C:
Of course, if neither alternative A nor alternative B accurately describe how the ternary operator works, please explain me how it works.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
“替代方案 A”:
如果您在两个函数上都放置一个简单的警报消息,则只有 functionOne 会显示其消息。
The "alternative A":
If you put a simple alert message on both functions, only functionOne will display its message.
根据规范,它的工作方式类似于替代方案A:
According to the specification it works like in Alternative A:
三元运算符由于多种原因而延迟计算。
x != 0 ? 10 / x : 10;
如果它同时评估所有内容,如果 x 为零,您将得到除以零的错误The ternary operator evaluates lazily for several reasons.
x != 0 ? 10 / x : 10;
If it evaluated everything at the same time you would get a divide by zero error if x were zero运行这个并找出:
Run this and find out: