2

例子:

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

8 回答 8

3

是的,尽管运算符优先级总是很棘手,但它的工作原理是一样的,所以我建议使用括号以避免混淆。

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

于 2010-11-08T17:01:09.610 回答
2

我不确定这是否有效:

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

但这有效:

y = x > 100 ? foo : bar ;
于 2010-11-08T17:02:14.137 回答
1

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

于 2010-11-08T17:01:14.383 回答
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));

会回答你的问题。

于 2010-11-08T17:02:56.847 回答
1

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

condition ? true-expression : false-expression

它只计算表达式,因此处理由条件决定的表达式的副作用。

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

于 2010-11-08T17:03:07.147 回答
1

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

于 2010-11-08T17:04:05.397 回答
1

是的,根据条件运算符Wikipedia 文章和ECMA-262标准(参见第 11.12 节)。

于 2010-11-08T17:04:38.263 回答
1

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

这是window假设y并且z是全球性的。否则,您需要提供适当的上下文。

window[x > 100 ? 'y' : 'z'] = x;
于 2010-11-08T17:12:23.413 回答