我正在使用我在项目中继承的一些JS代码,并且在几个实例中它具有像这样的循环设置:
while(text = someBufferObject.read()) {
//do stuff with text
}
Run Code Online (Sandbox Code Playgroud)
我假设这是为了实现某种类型的do-while类型功能.但是,当我通过JSLINT运行它时,它抱怨它"预期一个条件表达式,而是看到一个赋值."
是否有一种更为公认的方法我应该用于这些循环?我不确定下面的内容是否是最佳方式:
text = someBufferObject.read()
while(text) {
//do stuff with text
text = someBufferObject.read()
}
Run Code Online (Sandbox Code Playgroud)
bob*_*nce 11
是否有更容易接受的方法
不要将JSLint的建议视为福音.这是一个胡思乱想的老人的教条意见; 其中一些是完全合理的,有些是相当可疑的.
while (variable= assignment)虽然它有时可能是一个错误的比较器,但也是一种广泛理解的类C语言的习语.无论你使用这种方法还是其他方法都是品味问题,你应该亲自权衡,而不是盲目地接受克罗克福德的法令.
JavaScript 确实有一个do-while循环,所以如果你的测试始终在最后,那么这将是一个更合适的结构:
do {
text= someBufferObject.read();
// do something
} while (text);
Run Code Online (Sandbox Code Playgroud)
更常见的是,你正在看的是一个中等测试循环.您可能喜欢也可能不喜欢breakPython使用的习语:
while (true) {
text= someBufferObject.read();
if (!text)
break;
// do something
}
Run Code Online (Sandbox Code Playgroud)
Ste*_*wig 11
您只需将其包装在另一组括号中以使JSLint满意.
while((text = someBufferObject.read())) {
//do stuff with text
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2175 次 |
| 最近记录: |