我收到以下 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
如此处所述。