JSHint - 期望一个条件表达式,而是看到一个赋值

Tom*_*ski 4 javascript for-loop jshint

我很清楚类似的问题,但我仍然无法解决我的问题.

所以,我的代码看起来像这样:

for (var e, i = 0; e = formErrors[i]; i += 1)
Run Code Online (Sandbox Code Playgroud)

JSHint在char 39中返回错误,所以在;之后formErrors[i].我能做什么?

Ami*_*mit 7

JSHint警告你一个潜在的错误.期望for语句的第二部分是布尔表达式.通常情况下,你会使用这个比较运营商之一(==,===,!=,>等..).由于表达式e = formErrors[i]看起来很轻,可能是一个错误,可能是由于缺少等号.这是一个常见的拼写错误,会导致很多错误.

显然,在这种情况下,它不是一个错误,而是故意使用任何experssion评估某事的事实,并且赋值表达式evalutaes到指定的值:

因此该for语句实际上为其赋值e,但也将该值作为条件求值,如果需要则将其转换为布尔值.

您可以重构代码,以便它分配值使用满足JSHint的转换操作并使代码对读者更明显:

for (var e, i = 0; !!(e = formErrors[i]); i += 1)
Run Code Online (Sandbox Code Playgroud)

第二个!(直接在前面的(e...那个)导致一个转换为布尔值,但也否定它,第一个!回复了这个否定.