出乎意料的'继续'

asi*_*ifg 21 javascript jslint

我有:

while (i < l) {
   if (one === two) { continue; }
   i++;
}
Run Code Online (Sandbox Code Playgroud)

但JSLint说:

第1行第20个问题:意外'继续'.

if (one === two) { continue; }
Run Code Online (Sandbox Code Playgroud)

我犯了什么错误?应该如何我的代码真的看?

Que*_*tin 23

来自JSLint文档:

continue 声明

避免使用continue语句.它往往会模糊功能的控制流程.

因此,如果要符合JSLint遵循的约定,请完全取出它.

  • 删除继续经常导致圣诞树代码.(嵌套ifs).不是我喜欢的东西. (42认同)
  • +1这是JSLint最近的一个变化,以前允许继续.现在有一个选项继续:true可以容忍继续使用. (6认同)
  • 我最近更新了几个项目以符合这个新的限制:通常,您将在循环中将剩余的代码包含在具有相反条件的if中.在我们的情况下,影响相当有限,但我倾向于发现使用继续更具可读性的备用版本并考虑添加continue:true到我的JSLint配置以保持代码不变. (2认同)
  • 通常,您会重构代码以避免使用continue; 道格拉斯·克罗克福德的观点是,他"从来没有看到一段代码没有通过重构来删除继续声明而得到改善".总的来说,我同意,但我已经看到了一些偶然的用法,其中重构会使代码受到收益递减规律的影响.这基本上是一个判断. (2认同)
  • 道格拉斯·克罗克福德设定的一些规则真的让我烦恼,即使你知道他在说什么 (2认同)

小智 10

JSLint实际上试图说的是反转if,你可以消除continue:

while (i < 1) {
    if (one !== two) {
        i += 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

此外,如果您想坚持使用JSLint的严格指南,请不要使用"i ++",而是使用"i + = 1".

希望这可以帮助 :)