“条件”(?:)运算符在JavaScript中是否像在C中一样工作?

时间:2010-11-08 16:59:36

标签: javascript c operators ternary-operator conditional-operator

示例:

var x, y, z;
//...
x > 100 ? y = x : z = x ;

8 个答案:

答案 0 :(得分:3)

是的它确实有效,尽管运算符优先级总是很棘手所以我建议用括号来避免混淆。

切线相关..
您也可以在JavaScript中使用||,类似于C#中的空合并运算符??

答案 1 :(得分:2)

我不确定这是否有效:

x > 100 ? y = x : z = x ;

但这有效:

y = x > 100 ? foo : bar ;

答案 2 :(得分:1)

是的,三元运算符的工作方式相同in Javascript。您的示例是组合了很多表达式,因此precedence可能是一个问题。您应该使用括号来确保优先级。

答案 3 :(得分:1)

这可以帮助你(将来):

https://developer.mozilla.org/en/JavaScript/Reference/Operators/Operator_Precedence

首先评估>比较,因为它具有优先级8. ?:的优先级为15,=的优先级低于16。这意味着三元运算符将在任何赋值之前运行(即,将评估第一个操作数,条件,然后仅选择一个分支)。

也是一个简单的测试

//x = 50;
x = 200;
x > 100 ? y = x : z = x ;
alert((typeof y)+'|'+(typeof z));

会回答你的问题。

答案 4 :(得分:1)

是的,它的工作方式相同,因为它具有以下基本语法

condition ? true-expression : false-expression

它仅评估表达式,因此处理由条件指示的表达式的副作用。

这是关于三元运算符的Mozilla文档的链接

答案 5 :(得分:1)

是的,三元运算符在Javascript中的工作方式与在C,C ++,C#,Java,Javascript,Perl和PHP中的工作方式相同。

答案 6 :(得分:1)

是的,根据conditional operator维基百科文章和ECMA-262标准(见第11.12节)。

答案 7 :(得分:1)

这是一种不同的方法。您可以使用三元组将变量选为方括号内的字符串。

window假定yz是全球性的。否则,您需要提供适当的上下文。

window[x > 100 ? 'y' : 'z'] = x;