无条件地使用条件表达式进行默认分配

时间:2018-01-22 19:42:09

标签: javascript reactjs eslint

我收到以下linting错误:var scopeFactory = services .BuildServiceProvider() .GetRequiredService<IServiceScopeFactory>(); var scope = scopeFactory.CreateScope(); var provider = scope.ServiceProvider; var dbContext = provider.GetRequiredService<ApplicationDbContext>(); var graphSdkHelper = provider.GetRequiredService<IGraphSDKHelper>(); var memoryCache = provider.GetRequiredService<IMemoryCache>(); ...

下面有什么问题?

Unconditional use of conditional expression for default assignment

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

2 个答案:

答案 0 :(得分:2)

它本身并非错误,但最好写成:

myOverride || MAGIC_HOST

解释here

答案 1 :(得分:1)

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

  

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

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

// Good
var foo = bar || 1;

因此规则告诉您改为使用myOverride || MAGIC_HOST

你没有拥有,你所显示的代码不是错误。只是它没有通过那个ESLint规则。

* “遗憾的是,他们称之为'三元'” - 条件运算符是一个三元运算符(一个接受三个操作数的运算符,就像{{1}一样是一个布尔运算符 - 一个接受两个操作数的运算符)。现在, 是唯一的三元运算符JavaScript。但随着语言的发展,这并不一定总是如此。它正确地称为conditional operator