示例:
var x, y, z;
//...
x > 100 ? y = x : z = x ;
答案 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
假定y
和z
是全球性的。否则,您需要提供适当的上下文。
window[x > 100 ? 'y' : 'z'] = x;