我使用 JSLint 验证 JavaScript 已经有大约 2 年了,偶尔会有一些规则发生变化。一般来说,当 JSLint 引入新规则时,会有一个复选框可以在解析时忽略此规则,或者如果您选择不忽略它,则使您的代码符合它。
然而,当我今天运行 JSLint 验证时,遇到了这两个新错误:
使用空格,而不是制表符。
这不是“制表符和空格混合”错误。我只使用选项卡。这是“制表符和空格混合”的最近修改版本,现在一般不允许使用制表符。
And:
不安全的性格。
*/
不安全的性格。
_const:{
没有新的选项可以忽略。我无法理解关闭块注释有什么不安全之处,为什么它认为 _const: { 当我有时不安全nomen: true
,(在标识符中悬挂 _)或者为什么我应该突然从空格切换到制表符,当我仍然有关于 4 个空格缩进作为制表符的配置时。
有谁知道为什么要引入这些至少如何使 JSLint 忽略这些新规则?
Update:
The Messy White Space
选项可以解决该问题,但会导致其他意外行为:
if (condition) {
// ^-- there is a space but it won't indicate an error
看来 Douglas Crockford 让更多的人转向了 JSHint。看一下这次提交 https://github.com/douglascrockford/JSLint/commit/f819cf3c65d07086cf217c549c577fa77dc65fc9.
“混合空格和制表符”错误已被删除,并在其位置添加了新的“使用空格,而不是制表符”错误。除此之外,该差异中的一个微小变化表明了造成这种情况的原因。以下行(已添加注释):
at = source_row.search(/ \t/);
// ^ Space
已替换为:
at = source_row.search(/\t/);
// ^ No space!
在该搜索之后有一个if
陈述。如果条件评估为true
时,会发出“使用空格,而不是制表符”警告。这是该声明:
if (at >= 0) {
warn_at('use_spaces', line, at + 1);
}
I hope这只是克罗克福德的一个小疏忽。正如您所看到的,如果您使用制表符,JSLint 现在将发出此警告anywhere。不幸的是,他的提交消息完全没有用,并且文档似乎没有更新,所以我除了推测此更改背后的原因之外无能为力。
我建议你放弃 JSLint 并改用JSHint http://jshint.com/现在。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)