JSLint: використовувався до його визначення


95

Привіт, у мене є 3 файли JavaScript.

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

У файлі file1.js я маю

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

Я отримую помилку "jQuery" була використана до того, як її було визначено. і "документ" використовувався до його визначення.

Як мені безпечно позбутися цього попередження.

Якщо я це роблю

var document = document || {}; 

то в моїй утиліті.js, якщо вона використовується, вона буде нульовою в IE і добре в firefox.

Яке найкраще рішення цього?


можливий дублікат JS Lint: "ярлик" використовувався до його визначення . Також переконайтеся, що у параметрах вибрано Припустимо браузер .
Енді Е

@ChunpingWang Помітив, що Ви все ще були активними в SO, і на це питання бракувало прийнятої відповіді. Чи в одній із цих відповідей не вистачає чогось, що потрібно, щоб зробити їх прийнятними? Здається, відповідь Квентіна вирішить проблему за запитом. Будь-яка додаткова інформація, необхідна для відповіді на ваше запитання?
jorffin

Відповіді:


169

З документації

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

Деякі глобальні системи можна визначити для вас. Виберіть параметр Припустити браузер (браузер), щоб заздалегідь визначити стандартні глобальні властивості, що надаються веб-браузерами, наприклад, документ і addEventListener.

Приклад:

/*jslint browser: true*/
/*global $, jQuery*/

25
Примітка: ви не можете вставити пробіл раніше, globalтому /* global var, var2 */це не працює. /*global var, var2*/працює
radixhound

4
Множина еквівалентна і також працює: /*globals */а також має більше сенсу при додаванні списку змінних
Robert Koritnik,

2
Тож рішення для JSLint, який скаржиться на те, чого не вистачає у всіх ваших файлах, - це додати рядок до всіх ваших файлів ... Це жахлива порада.
Черін

@Cerin - Ні, рішення JSLint, яке скаржиться на те, що ти використовуєш змінну, для якої вона не може знайти визначення, - це повідомити їй, що ти визначив її в іншому файлі (на відміну, наприклад, від друкарської помилки в назві змінної що згодом зламає вашу програму).
Квентін

1
@Quentin, так, і для вашого виправлення цього потрібно "розповісти про jQuery" у кожному окремому файлі. Це величезна кількість роботи для чогось, що не приносить користі. Ви можете просто вимкнути цю перевірку в JSLint.
Черін

30

Як каже Квентін, є /*global*/директива.

Ось приклад (поставте це у верхній частині файлу):

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

Переконайтесь, що початковий глобальний оператор знаходиться в тому ж рядку /*, що інакше, або він ламається.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.