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



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

下面有什么问题?

(myOverride) ? myOverride : MAGIC_HOST,

如果定义了myOverride,我想使用myOverride,如果没有定义,我想使用env varMAGIC_HOST

显然您正在使用 ESLint(因为该错误是 ESLint)错误。这是因为no-unneeded-ternary规则旨在标记条件运算符的不必要使用(他们称之为"三元")¹。从链接的文档:

另一个常见的错误是使用单个变量作为条件测试和结果。在这种情况下,逻辑 OR 可用于提供相同的功能。下面是一个示例:

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

所以规则告诉你改用myOverride || MAGIC_HOST

您不必这样做,您显示的代码没有。只是它没有通过 ESLint 规则。


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

它本质上并没有,但最好写成:

myOverride || MAGIC_HOST

如此处所述。

最新更新