JSLint忽略未定义的变量

时间:2011-10-23 15:01:00

标签: javascript jslint

我已将我的js程序切成许多部分用于开发。现在,当我通过JSLint运行一个部分时,我收到了很多类型的错误:

  

第48行问题42:' XXXXXXX'在它之前使用过   定义

我已经找了一个选项"容忍未定义的变量"但是没有找到任何这样的选择。我能做些什么来让JSLint忽略未定义的变量?

4 个答案:

答案 0 :(得分:43)

来自JSLint documentation

  

JSLint还识别一个/ * global * /指令,该指令可以向JSLint指示此文件中使用的变量是在其他文件中定义的。注释可以包含逗号分隔的名称列表。每个名称后面都可以跟冒号后跟true或false,true表示该变量可以由此文件赋值,false表示不允许赋值(默认值)。

示例:

/*global var1, var2, var3 */

但是我建议你不要这样做,而是编写一个简单的脚本来重新组装所有文件并使用JSLint检查生成的文件。

答案 1 :(得分:4)

答案“使用不同的程序”是不可接受的。

转到首选项>套餐设置> JSLint>高级构建设置。

在“cmd”数组中,添加“ - undef”。它应该看起来像

{
    "cmd": [
      "node", 
      "${packages}/JSLint/linter.js",
      // tolerate missing 'use strict' pragma
      "--sloppy",
      // suggest an indent level of two spaces
      "--indent", "2",
      // assume node.js to predefine node globals
      "--node",
      // tolerate unfiltered for in
      //"--forin",
      // tolerate dangling _ in identifiers
      "--nomen",
      // tolerate many var statements per function
      "--vars",
      // tolerate ++ and --
      "--plusplus",
      // tolerate Douglas Crockford
      "--stupid",
      "--todo",
      // -----------------------------------------------
      // tolerate undefined variables
      "--undef",
      // -----------------------------------------------
      "$file"
    ],
    "file_regex": "^\\/.*\\/([^\\/]*)$",
    "line_regex": ".*\/\/ Line ([0-9]*), Pos ([0-9]*)$",
    "selector": "source.js, source.css, source.json, source.sass, source.less, source.html"
}

答案 2 :(得分:2)

在您的设置中使用预定义选项。你会看到我添加了#34; NAMESP"在数组的末尾。

另请注意,我修复了jQuery的错误(从JQuery到jQuery)。

    // examples using predef flag.
    "--predef", "['angular', 'document', '\\$', '_', 'jQuery', 'NAMESP']"

答案 3 :(得分:-9)

JSHint是JSLint的一个很好的替代品,它可以选择立即打开/关闭所有未定义变量的警告。