例子:
var x, y, z;
//...
x > 100 ? y = x : z = x ;
例子:
var x, y, z;
//...
x > 100 ? y = x : z = x ;
是的,尽管运算符优先级总是很棘手,但它的工作原理是一样的,所以我建议使用括号以避免混淆。
切线相关..
您也可以||
在 JavaScript 中使用类似于??
C#中的 null 合并运算符
我不确定这是否有效:
x > 100 ? y = x : z = x ;
但这有效:
y = x > 100 ? foo : bar ;
是的,三元运算符在 Javascript 中的工作方式相同。您的示例结合了很多表达式,因此优先级可能是一个问题。您应该用括号括起来以确保优先级。
这应该可以帮助您(将来):
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));
会回答你的问题。
是的,它的工作原理相同,因为它具有以下基本语法
condition ? true-expression : false-expression
它只计算表达式,因此处理由条件决定的表达式的副作用。
这是关于三元运算符的 Mozilla 文档的链接
是的,三元运算符在 Javascript 中的工作方式与在 C、C++、C#、Java、Javascript、Perl 和 PHP 中的工作方式相同。
这是一种不同的方法。您可以使用三元将变量选择为方括号内的字符串。
这是window
假设y
并且z
是全球性的。否则,您需要提供适当的上下文。
window[x > 100 ? 'y' : 'z'] = x;