无条件使用条件表达式进行默认赋值
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.
我收到以下 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.