在这个简单的代码中:
do {
console.log('o');
} while (false);
jslint在最后一行产生警告Unexpected 'false'
我理解为什么,但我仍然想要将其静音,因为在这些情况下,我希望如何控制流程。
答案 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);