回答

3

是它的工作一样,虽然运算符优先级始终是棘手的,所以我会建议括号,以避免混乱。

切向相关..
您还可以使用在JavaScript ||类似空合并运算符??在C#

1

是,三元运营商的工作方式相同in Javascript。你的例子是结合了很多表达式,所以precedence可能是一个问题。你应该用括号来确保优先级。

2

我不知道,如果这个工程:

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

但这个工程:

y = x > 100 ? foo : bar ; 
+0

我同意你.. – 2010-11-08 17:05:55

+1

经过测试。看起来它确实有效。 'var z = 0; var y = 0; var x = 10; x> 100? y = x:z = x;'你得到'x:10,y:0,z:10'。 – 2010-11-08 17:06:18

+4

你的例子并没有完成和原始代码一样的功能 – StrixVaria 2010-11-08 17:06:19

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)); 

会回答你的问题。

1

是,三元运营商合作在Javascript中以同样的方式,因为他们在C,C++,C#,Java的事, Javascript,Perl和PHP。

1

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

window假设yz是全球性的。否则,你需要给出适当的上下文。

window[x > 100 ? 'y' : 'z'] = x; 
相关问题