我已将我的js程序切成许多部分用于开发。现在,当我通过JSLint运行一个部分时,我收到了很多类型的错误:
第48行问题42:' XXXXXXX'在它之前使用过 定义
我已经找了一个选项"容忍未定义的变量"但是没有找到任何这样的选择。我能做些什么来让JSLint忽略未定义的变量?
答案 0 :(得分:43)
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的一个很好的替代品,它可以选择立即打开/关闭所有未定义变量的警告。