Jshint и jquery: '$' не определены
-
28-10-2019 - |
Вопрос
Следующее 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
- Предопределен (внизу), нажмите Установлен
- Jshint
- Инструменты качества кода
- JavaScript
Вы можете напечатать все, например console:false
, и это также добавит это в список (.jshintrc) - как глобальный.
Чтобы исправить эту ошибку при использовании онлайн -реализация Jshint:
- Нажмите «Настройка» (верхняя часть среднего столбца на странице)
- Включить «jQuery» (под разделом «предположить» внизу)
Вы, вероятно, хотите сделать следующее,
const $ = window.$
Чтобы избежать ошибки в личинке.