JSLint игнорирует неопределенные переменные - PullRequest
15 голосов
/ 23 октября 2011

Я разрубил свою программу js на множество частей для разработки. Теперь, когда я запускаю одну часть через JSLint, я получаю много ошибок типа:

Проблема в строке 48, символ 42: «XXXXXXX» использовался до того, как был определены.

Я искал опцию "Допуск неопределенных переменных", но не нашел такой опции. Что я могу сделать, чтобы JSLint игнорировал неопределенные переменные?

Ответы [ 4 ]

43 голосов
/ 23 октября 2011

Из документации JSLint :

JSLint также распознает директиву / * global * /, которая может указывать JSLint, что переменные, используемые в этом файле, были определены в других файлах.Комментарий может содержать разделенный запятыми список имен.Каждое имя может опционально сопровождаться двоеточием и иметь значение true или false, true указывает, что переменная может быть назначена этим файлом, и false указывает, что присвоение недопустимо (что является значением по умолчанию).

Пример:

/*global var1, var2, var3 */

Однако я бы посоветовал вам этого не делать, а вместо этого написать простой скрипт, который повторно собирает все файлы и проверяет полученный файл с помощью JSLint.

4 голосов
/ 31 июля 2013

Ответ «использовать другую программу» недопустим.

Перейдите в «Настройки»> «Настройки пакета»> «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 голосов
/ 25 октября 2014

используйте предопределенную опцию в ваших настройках. Вы увидите, что я добавил «NAMESP» в конце массива.

Обратите внимание, что я исправил опечатку для jQuery (от JQuery до jQuery).

    // examples using predef flag.
    "--predef", "['angular', 'document', '\\$', '_', 'jQuery', 'NAMESP']"
0 голосов
/ 23 октября 2011

JSHint является хорошей альтернативой JSLint и имеет возможность включать / выключать предупреждения для всех неопределенных переменных одновременно.

...