关于三元(? :
JavaScript 中的 ) 运算符,我想知道典型浏览器的 JavaScript 解释器如何评估它:
替代方案A:
- 计算第一个操作数。
- 如果第一个操作数的结果为 true,则计算并返回第二个操作数。
- 否则,计算并返回第三个操作数。
替代方案B:
- 所有三个操作数均被评估。
- 如果第一个操作数的结果为 true,则返回第二个操作数的结果。
- 否则,返回第三个操作数的结果。
替代方案C:
当然,如果选项 A 和选项 B 都没有准确描述三元运算符的工作原理,请解释一下它是如何工作的。
根据规格 http://ecma262-5.com/ELS5_HTML.htm#Section_11.12它的工作原理就像在替代方案A:
生产ConditionalExpression : LogicalORExpression ? AssignmentExpression : AssignmentExpression
评价如下:
- Let
lref
是评估的结果LogicalORExpression
.
- If
ToBoolean(GetValue(lref))
is true
, then
- Let
trueRef
是评估第一个的结果AssignmentExpression
.
- Return
GetValue(trueRef)
.
- Else
- Let
falseRef
是评估第二个的结果AssignmentExpression
.
- Return
GetValue(falseRef)
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)