是否可以将三元运算符放在开关内? Javascript

Posted

技术标签:

【中文标题】是否可以将三元运算符放在开关内? Javascript【英文标题】:is it possible to put a ternary operator inside a switch? Javascript 【发布时间】:2021-12-12 17:44:39 【问题描述】:

是否可以在 switch 语句中放置三元运算符?

类似这样的东西(不起作用):

case "streetName" : entries[0][1] ?? entries[0][1] += `, $value` : value;

【问题讨论】:

你正在混合Ternary (? + :) 和Nullish coalescing (??)。 另外,无论你在做什么,你可能都不应该这样做。三元应该用于简单的分配。您正试图在其中增加一个值。这只是令人困惑和不必要的。 使用正确的语法是可能的。但仅仅因为某事是可能的,并不意味着它应该去做。 从技术上讲,您可以在任何允许使用表达式的地方使用三元运算符,包括在switch 括号内和作为case 值,而不仅仅是在case 语句中。你所说的“不工作”与使用三元无关。 前面的案例是:case "streetNumber" : entries[0][1] = value;理想情况下,如果存在,我想连接成一个变量 【参考方案1】:

当然,使用单个问号,不要忘记将结果的第二部分分配给某物:

case "streetName" : entries[0][1] ? entries[0][1] += `, $value` : entries[0][1] = value;

【讨论】:

感谢您的回答!这行得通。奇怪的是,我之前使用过三元组,但与 case 语句混合使用,并且不知道是否可以这样做,似乎让我忘记了语法

以上是关于是否可以将三元运算符放在开关内? Javascript的主要内容,如果未能解决你的问题,请参考以下文章

React useState:如何将三元运算符放在三元运算符中?

在反应中更新三元运算符内的状态

箭头函数内的三元运算符

三元条件运算符的警告仅在本地范围内发生

多个三元运算符

是否可以在初始化程序中使用三元运算符初始化静态数组?