JSLint игнорировать переменные undefined

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

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

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

Ответы

Ответ 1

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

Ответ 2

От Документация JSLint:

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

Пример:

/*global var1, var2, var3 */

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

Ответ 3

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

Перейдите в раздел "Настройки" > "Параметры пакета" > "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"
}

Ответ 4

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

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

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