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

AnA*_*ice 1 javascript reactjs eslint

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

下面有什么问题吗?

(myOverride) ? myOverride : MAGIC_HOST,
Run Code Online (Sandbox Code Playgroud)

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

T.J*_*der 7

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

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

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

// Good
var foo = bar || 1;
Run Code Online (Sandbox Code Playgroud)

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

你不具备对,还有你的代码是不是错了。只是它没有通过 ESLint 规则。


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