Вопрос

Следующее JS:

(function() {
  "use strict";

  $("#target").click(function(){
    console.log("clicked");
  });

}());

Доходность:

test.js: line 5, col 3, '$' is not defined.

При изготовлении с помощью JSHINT 0.5.5. Любые идеи?

Это было полезно?

Решение

Если вы используете относительно недавнюю версию Jshint, в целом предпочтительным подходом является создание файла .jshintrc в корне вашего проекта и поместите эту конфигурацию:

{
    "globals": {
        "$": false
    }
}

Это заявляет JSHINT, что $ является глобальной переменной, и FALSE указывает, что она не должна быть переопределена.

Файл. Если вы не можете или не хотите использовать файл .jshintrc, вы можете добавить его в верхней части файла скрипта:

/*globals $:false */

Существует также сокращенная опция "jQuery" jshint, как видно на Страница параметров Jshint..

Другие советы

Вы также можете добавить две строки в свой .jshintrc

  "globals": {
    "$": false,
    "jQuery": false
  }

Это говорит о том, что есть две глобальные переменные.

Все, что вам нужно сделать, это установить "jquery": true в твоей .jshintrc.

В соответствии с Ссылка на параметры Jshint:

jQuery

Этот вариант определяет глобалов, выявленные библиотекой JQuery JavaScript.

Вот небольшой маленький список, чтобы поместить в свой .jshintrc
Я добавлю в этот список в прошлое.

{
  // other settings...
  // ENVIRONMENTS
  // "browser": true, // Is in most configs by default
  "node": true,
  // others (e.g. yui, mootools, rhino, worker, etc.)
  "globals": {
    "$":false,
    "jquery":false,
    "angular":false
    // other explicit global names to exclude
  },
}

Если вы используете редактор IntelliJ, такой как Webstorm, Pycharm, Rubymine или Intellij Idea:

В разделе среды File/Settings/JavaScript/Code Caffice Tools/jshint нажмите на флажок JQuery.

Вместо того, чтобы рекомендовать обычные «выключить глобальные значения jshint», я рекомендую использовать модульный шаблон Чтобы решить эту проблему. Он сохраняет ваш код «содержащимся» и дает повышение производительности (на основе Пола Ирландца "10 вещей, которые я узнал о jQuery").

Я склонен писать свои шаблоны модуля, как это:

(function (window) {
    // Handle dependencies
    var angular = window.angular,
        $ = window.$,
        document = window.document;

    // Your application's code
}(window))

Вы можете получить эти другие преимущества производительности (объясняется больше здесь):

  • При министерстве кода прошло window Объектная объявление также становится мини -министерством. например window.alert() стали m.alert().
  • Код внутри самостоятельной анонимной функции использует только 1 экземпляра window объект.
  • Вы подходите к погоне при звонке в window свойство или метод, предотвращая дорогостоящее обход цепочки применения, например, window.alert() (быстрее) против alert() (медленнее) производительность.
  • Локальный объем функций с помощью «пространства имен» и сдерживания (глобальные вещества злые). Если вам нужно разбить этот код на отдельные сценарии, вы можете сделать подмодуль для каждого из этих сценариев и импортировать их в один основной модуль.

Если вы используете редактор IntelliJ, под

  • Предпочтения/настройки
    • JavaScript
      • Инструменты качества кода
        • Jshint
          • Предопределен (внизу), нажмите Установлен

Вы можете напечатать все, например console:false, и это также добавит это в список (.jshintrc) - как глобальный.

Чтобы исправить эту ошибку при использовании онлайн -реализация Jshint:

  • Нажмите «Настройка» (верхняя часть среднего столбца на странице)
  • Включить «jQuery» (под разделом «предположить» внизу)

Вы, вероятно, хотите сделать следующее,

const $ = window.$

Чтобы избежать ошибки в личинке.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top