仅在JavaScript中的三元运算符中条件为true时分配

cod*_*iac 39 javascript ternary-operator

是否可以在JavaScript中执行此类操作?

max = (max < b) ? b;
Run Code Online (Sandbox Code Playgroud)

换句话说,仅在条件为真时指定值.如果条件为假,则不执行任何操作(无分配).这可能吗?

Ber*_*rgi 73

那么不要使用三元运算符,它需要第三个参数.如果您不想更改()max,max则需要重新分配max = (max < b) ? b : max.

一个if语句更加清晰:

if (max < b) max = b;
Run Code Online (Sandbox Code Playgroud)

如果你需要它作为表达式,你可以(ab)使用AND的短路评估:

(max < b) && (max = b)
Run Code Online (Sandbox Code Playgroud)

顺便说一下,如果你想避免重复变量名(或表达式?),你可以使用最大函数:

max = Math.max(max, b);
Run Code Online (Sandbox Code Playgroud)


mar*_*ful 11

具有三元运算符的表达式必须具有两个值,即对于true和false情况.

但是你可以

max = (max < b) ? b : max;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果condition为false,则value max不会改变.


小智 6

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

(max < b) ? max = b : '';
Run Code Online (Sandbox Code Playgroud)


Roc*_*mat 5

max如果条件为假,您可以设置为自己.

max = (max < b) ? b : max;
Run Code Online (Sandbox Code Playgroud)

或者您可以尝试使用&&运算符:

(max < b) && (max = b);
Run Code Online (Sandbox Code Playgroud)

或者为了保持代码简单,只需使用if.

if(max < v) max = b;
Run Code Online (Sandbox Code Playgroud)