在 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 选项的主要内容,如果未能解决你的问题,请参考以下文章

Sublime Text 2:禁用文档预览

禁用 (GitGutter) 关于提交 Sublime Text 的消息

sublime text怎么设置编码格式

sublime text2 汉化

Sublime Text3使用汇总

Sublime Text3快捷键