在 Sublime Text 2 中禁用或覆盖 JSLint 选项
Posted
技术标签:
【中文标题】在 Sublime Text 2 中禁用或覆盖 JSLint 选项【英文标题】:Disabling or Overriding JSLint Options in Sublime Text 2 【发布时间】:2013-04-27 23:19:44 【问题描述】:我在 Sublime Text 2 中安装了 JSLint 插件。但我不同意 JSLint 强加的一些规则,特别是在循环内声明变量时出现此错误。
Move 'var' declarations to the top of the function.
for (var i = 0; i < 100; i++) // Line 12, Pos 10
我的问题是如何在 Sublime Text 2 上的 JSLint 中覆盖或禁用此规则。
【问题讨论】:
一些插件允许您指定要忽略的代码/模式。最好的办法是查看插件中的 README。如果它可能没有对插件提出功能请求,或者找到一个允许您这样做的插件。我快速搜索了一下,似乎有两个 JSLint 插件,所以请确保查找正确的 repo。 【参考方案1】:如果你有Darren DeRidder's plugin(Sublime Text 有两个 JSLint 插件),你可以使用this:
你可以根据偏好设置任何 jslint 的选项 -> 包 设置 -> jslint -> 高级内置设置。看 http://www.jslint.com/lint.html#options 中的选项列表 JSLint。
现在您将很难在循环中禁用 just var 声明。您可以将 vars
option 设置为 true,但是 JSLint 将允许您在页面上的任何位置拥有任意数量的 var 声明。这可能是一种误导性做法,因为 javascript 有一些所谓的 Function Scope 和 "hoists" declarations to the top of their scope。
编辑:啊,我撒谎了。 vars
只允许多个 var 声明语句,但它们仍然必须位于函数的顶部。它只允许你这样做:
function fnTest()
var i;
var j; // Oh boy! Two var statements at the TOP of the same function
for (i = 0; i < 100; i++)
j++;
而不是
function fnTest()
var j;
for (var i = 0; i < 100; i++) // still can't do this.
j++;
虽然我很惊讶 Crockford 不允许你这样做,但我认为你是 out of luck,并且必须改用 JSHint(似乎有一个 Sublime 插件 for JSHint here,虽然我没有'没用过)。
【讨论】:
+1 用于使用 JSHint,这是最干净的解决方案。 JSHint 包含在 SublimeLinter 插件中。 它不想让你在里面声明变量的原因是因为Javascript'提升'功能。这不是你所期望的,所以它试图让你保证你看到 JS 无论如何都会做什么。【参考方案2】:@chanHXC 与 sublime-jslint 中的新默认选项一起跳过 var 声明警告。
【讨论】:
以上是关于在 Sublime Text 2 中禁用或覆盖 JSLint 选项的主要内容,如果未能解决你的问题,请参考以下文章