2013-02-21 69 views
20

在JavaScript中可以這樣做嗎?只在JavaScript中的三元運算符條件爲真時才分配

max = (max < b) ? b; 

換句話說,只有當條件爲真時才賦值。如果條件爲假,則不做任何事(不分配)。這可能嗎?

+4

是有一些原因,使用正常'if'聲明避免? – 2013-02-21 18:03:36

+0

max =(max Pandian 2013-02-21 18:04:46

+0

很hacky '(max Musa 2013-02-21 18:07:52

回答

41

不要使用ternary operator那麼它需要第三個參數。如果您不希望它改變(max = (max < b) ? b : max),您需要重新分配maxmax

if-statement更加清晰:

if (max < b) max = b; 

如果你需要它是一個表達式,你可以(AB)使用的AND短路評價:

(max < b) && (max = b) 

順便說一句,如果你想避免重複變量名稱(或表達式?),你可以使用maximum function

max = Math.max(max, b); 
+0

對於'Math.min' +1,沒想到:-) – 2013-02-21 18:36:41

+0

沒想到第二種模式可以完成..真的很好。 – codiac 2013-02-22 11:48:30

+0

第二個是第一個更快?因爲在記憶方面,接縫的使用量相同。 – codiac 2013-02-22 11:55:48

2

沒有,是不是三元運營商特定的運算,但你可以使用它像這樣:

max = (max < b) ? b : max; 
5

您可以只設置max本身如果條件是假的。

max = (max < b) ? b : max; 

或者你可以嘗試使用&&操作:

(max < b) && (max = b); 

或者保持代碼簡單,只需使用一個if

if(max < v) max = b; 
7

與三元運算必須表達兼得值,即兩者的真假的情況。

但是,您可以

max = (max < b) ? b : max; 

在這種情況下,如果條件爲假的max價值不會改變。

0

我認爲三元更適合 試試這個

(max < b) ? max = b : ''; 
+3

請提供一些關於使用三元的優點的論點。 – Naktibalda 2017-08-18 08:40:55

0

我想一個更好的辦法可能是

max = Math.max(max, b) 
+0

應該在評論中。 – Rumit 2018-02-16 13:13:31