【问题标题】:Disabling or Overriding JSLint Options in Sublime Text 2在 Sublime Text 2 中禁用或覆盖 JSLint 选项
【发布时间】: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。

标签: sublimetext2 jslint sublime-jslint


【解决方案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 声明警告。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多