无条件使用条件表达式进行默认赋值

Unconditional use of conditional expression for default assignment

我收到以下 linting 错误:Unconditional use of conditional expression for default assignment

下面有什么问题吗?

(myOverride) ? myOverride : MAGIC_HOST,

如果定义了 myOverride 我想使用 myOverride,如果没有定义我想使用环境变量 MAGIC_HOST.

本身并没有错误,但最好写成:

myOverride || MAGIC_HOST

解释为 here

显然您正在使用 ESLint(因为该错误是 ESLint)错误。这是因为 no-unneeded-ternary rule 意味着标记 不必要 使用条件运算符(他们称之为“三元”)¹。来自链接文档:

Another common mistake is using a single variable as both the conditional test and the consequent. In such cases, the logical OR can be used to provide the same functionality. Here is an example:

// Bad
var foo = bar ? bar : 1;

// Good
var foo = bar || 1;

所以规则告诉你使用 myOverride || MAGIC_HOST 代替。

没有,您显示的代码没有错误。只是它没有通过 ESLint 规则。


¹ "他们称之为 'ternary'" - 条件运算符是 a 三元运算符(一个运算符接受三个操作数,就像 * 是一个二元运算符——一个接受两个操作数的运算符)。它是 目前 ,唯一的三元运算符 JavaScript。但随着语言的发展,这并不一定总是如此。它被正确地称为 conditional operator.