回答

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; 
相關問題