【发布时间】:2014-01-18 14:34:16
【问题描述】:
问题:函数没有返回预期的值 (3)。
以下代码未按预期返回 1。我发现这是由于使用了三元运算符。那么三元导致返回值出乎意料呢?是优先级吗?根据 mdn 规范,三元运算符是右结合的。
function foo()
{
var x = 1;
var flag = true;
function bar(a,b)
{
return a + b;
}
var y = bar(2,2) - (flag) ? x : 0;
return y;
}
alert(foo());
请注意,如果我修改该行:
var y = bar(2,2) - (flag) ? x : 0;
到
var y = bar(2,2) - ((flag) ? x : 0);
以上代码将按预期返回 3。
还要注意,如果我用任何类型的浮点数替换函数
var y = 3 - (flag) ? x : 0;
相同的意外返回值被评估为 1。
【问题讨论】:
标签: javascript ternary-operator operator-precedence