是否有理由不在while块声明中分配变量?

时间:2014-12-12 06:43:39

标签: javascript node.js

每当我做这样的事情......

var obj;

while (obj = doSomething()) {
  // something with obj
}

JSHint告诉我warning 84| Expected a conditional expression and instead saw an assignment.。但是,执行obj = doSomething()会返回doSomething()在赋值期间返回的值,因此以这种方式编写while循环是有意义的。

JSHint是否有特殊原因警告我,更重要的是,有没有理由不这样做?或者,我可以告诉JSHint忽略那些特定警告的行吗?

2 个答案:

答案 0 :(得分:5)

该警告是为了确保您没有错误输入=而不是=====

相反,您可以获得评估结果的布尔值,如此

while (!!(obj = doSomething())) {

答案 1 :(得分:-2)

=分配值且不是比较运算符。使用以下内容:

while (obj == doSomething()) {
  // something with obj
}

参考:http://www.w3schools.com/js/js_comparisons.asp