Javascript "do-while"类型循环

标签 javascript

我正在使用我在一个项目中继承的一些 JS 代码,并且在几个实例中它有像这样设置的循环:

while(text = someBufferObject.read()) {
  //do stuff with text
}

我假设这是为了实现某种 do-while 类型的功能。然而,当我通过 JSLINT 运行它时,它提示说它“需要一个条件表达式,但却看到了一个赋值。”

对于这些循环,我应该使用更可接受的方法吗?我不确定下面这样的方法是否是最好的方法:

text = someBufferObject.read()
while(text) {
  //do stuff with text
  text = someBufferObject.read()
}

最佳答案

Is there a more accepted approach

不要将 JSLint 的建议当作福音。这是一个脾气暴躁的老人的教条意见;有些完全合理,有些则相当值得怀疑。

while (variable= assignment),虽然它有时可能是一个错误的比较器,但它也是一种被广泛理解的类 C 语言的习语。无论您使用那种方法还是另一种方法,都是个人品味问题,您应该亲自权衡,而不是盲目接受克罗克福德的法令。

JavaScript 确实有一个 do-while 循环,所以如果你的测试始终在最后,那将是一个更合适的结构:

do {
    text= someBufferObject.read();
    // do something
} while (text);

虽然您正在查看的是一个中期测试循环,但更常见的是。您可能喜欢也可能不喜欢 Python 使用的 break 习语:

while (true) {
    text= someBufferObject.read();
    if (!text)
        break;
    // do something
}

关于Javascript "do-while"类型循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1726826/

相关文章:

javascript - Ajax 登录仅刷新记录的 div

javascript - 展开/折叠引导 Vue.js 表中的所有操作

javascript - Jquery 自动滚动不工作

javascript - 未捕获的类型错误 : undefined is not a function on loading jquery-min. js

javascript - 根据搜索文本框显示/隐藏行

javascript - d3 - 选择/取消选择节点 onclick

javascript - 数组中不允许有重复元素?错误: ngRepeat:dupes

javascript - 如何比较两种不同 React 状态下的数组对象

javascript - 抓取 Android 商店

javascript - Openlayers 3 - 如何垃圾收集 Canvas ReplayGroup 对象?