只在JavaScript中的三元运算符条件为真时才分配

问题描述:

在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

不要使用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

没有,是不是三元运营商特定的运算,但你可以使用它像这样:

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

您可以只设置max本身如果条件是假的。

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

或者你可以尝试使用&&操作:

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

或者保持代码简单,只需使用一个if

if(max < v) max = b; 

与三元运算必须表达兼得值,即两者的真假的情况。

但是,您可以

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

在这种情况下,如果条件为假的max价值不会改变。

我认为三元更适合 试试这个

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

请提供一些关于使用三元的优点的论点。 – Naktibalda 2017-08-18 08:40:55

我想一个更好的办法可能是

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

应该在评论中。 – Rumit 2018-02-16 13:13:31