Ошибка «[Переменная] была использована до того, как была определена» - PullRequest
2 голосов
/ 15 ноября 2011

У меня есть несколько из этих ошибок, и я не уверен, как «правильно» их исправить, дело в том, что у меня много файлов javascript (разделенных для облегчения сопровождения), и я включаю плагины и так далее.

Таким образом, в этом примере я использую ярлык от http://www.openjs.com/scripts/events/keyboard_shortcuts/

Это просто определяет ярлык для

shortcut = {.......

, тогда когда я в своем коде использую его как

 shortcut.add("F1", function () { showDialog(); }, { 'type': 'keydown', 'propagate': false, 'target': editor_document });

jslint будет жаловаться, что

JS Lint: «ярлык» использовался до того, как он был определен.

У меня также есть свой собственный код, в котором я использую функции, объявленные в других файлахтак, каков "правильный" способ решить это

Ответы [ 2 ]

7 голосов
/ 15 ноября 2011

Если переменная определена другим файлом, вы можете сообщить JSLint, предоставив комментарий в следующем формате:

/*global shortcut*/

Вы можете сделать это для ряда переменных, разделив их запятыми.Добавление : и true или false (по умолчанию false) будет указывать, может ли переменная быть переназначена текущим файлом:

/*global shortcut:false, otherVar:true*/

Вам не хватает ключевого слова var, которое используется для определения переменной для глобальной и функциональной областей.

var shortcut = { }

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

можно создавать неявные глобальные переменные, пропуская ключевое слово var, но оно весьма неодобрительно и совсем не рекомендуется.Если вам нужно создать глобальную переменную из внутренней области, вы можете добавить объект к window или, в зависимости от контекста, this:

function defineShortcut() {
    window.shortcut = {};
    /* or this.shortcut = {}; */
}

defineShortcut();
0 голосов
/ 15 ноября 2011

Вы должны объявить ярлык переменной с ключевым словом var перед его использованием, иначе это будет глобальная переменная, которая считается (и на самом деле) злом.

var shortcut;

shortcut = { ...
...