JSLint: использовался до того, как был определен - PullRequest
95 голосов
/ 08 марта 2012

Привет, у меня есть 3 файла javascript.

  • jquery.js
  • utility.js
  • file1.js

В file1.js у меня есть

jQuery.noConflict()
jQuery(document).ready(function($) { 
 // ....
});

Я получаю сообщение об ошибке «jQuery» использовался до того, как он был определен. и «документ» использовался до его определения.

Как мне безопасно избавиться от этого предупреждения.

Если я сделаю

var document = document || {}; 

тогда в моем utility.js, если он используется, он будет нулевым в IE и нормальным в Firefox.

Какое лучшее решение для этого?

Ответы [ 2 ]

169 голосов
/ 08 марта 2012

С документация

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

Некоторые глобалы могут быть предопределены для вас. Выберите параметр «Предполагать браузер (браузер)», чтобы заранее определить стандартные глобальные свойства, предоставляемые веб-браузерами, такими как document и addEventListener.

Пример:

/*jslint browser: true*/
/*global $, jQuery*/
31 голосов
/ 18 июля 2012

Как говорит Квентин, есть директива /*global*/.

Вот пример (поместите это вверху файла):

/*global var1,var2,var3,var4,var5*/

Убедитесь, что начальный глобальный оператор находится в той же строке, что и /*, иначе он будет разбит.

...