如何在do {}上将jslint错误静音(false)

时间:2014-09-10 03:45:06

标签: jslint

在这个简单的代码中:

do {
  console.log('o');
} while (false);

jslint在最后一行产生警告Unexpected 'false'

我理解为什么,但我仍然想要将其静音,因为在这些情况下,我希望如何控制流程。

1 个答案:

答案 0 :(得分:0)

让我们看一下while语句中jslint 期望的内容。来自消息来源:

labeled_stmt('while', function () {
    one_space();
    var paren = next_token;
    funct.loopage += 1;
    advance('(');
    step_in('control');
    no_space();
    edge();
    this.arity = 'statement';
    this.first = expected_relation(expression(0));
    if (this.first.id !== 'true') {
        expected_condition(this.first, 'unexpected_a');
    }
    no_space();
    step_out(')', paren);
    one_space();
    this.block = block('while');
    if (this.block.disrupt) {
        prev_token.warn('strange_loop');
    }
    funct.loopage -= 1;
    return this;
});

它大部分都像英文一样。 'while',一个空格,(没有空格,预期表达,没有空格)。

那么让我们来看看expression(0)是什么。如果你真的感兴趣的话,你可以通读消息来源,但说实话,我也无法真正理解它。抱歉。 https://github.com/douglascrockford/JSLint/blob/master/jslint.js

据我所知,expression(0)遍历运算符和操作数树,并查找Right Binding Power大于0的值? false的约束力为0?但变量和比较在这里是可以的。我不知道它是如何工作的。问克罗克福德。

至于关闭jslint,这是我的建议:

/*jslint devel: true, continue: true */
var i = 0;
var forever = false;
do {
    i = i + 1;
    if (i < 5) {
        continue;
    }
    console.log('o');
} while (forever);