Следующий JS:
(function() {
"use strict";
$("#target").click(function(){
console.log("clicked");
});
}());
Урожайность:
test.js: line 5, col 3, '$' is not defined.
При использовании lint с использованием JSHint 0.5.5. Любые идеи?
Следующий JS:
(function() {
"use strict";
$("#target").click(function(){
console.log("clicked");
});
}());
Урожайность:
test.js: line 5, col 3, '$' is not defined.
При использовании lint с использованием JSHint 0.5.5. Любые идеи?
Если вы используете относительно новую версию JSHint, обычно предпочтительный подход заключается в создании файла .jshintrc в корне вашего проекта и вставьте в него эту конфигурацию:
{
"globals": {
"$": false
}
}
Это объявляет JSHint, что $- глобальная переменная, а false указывает, что ее нельзя переопределять.
Файл .jshintrc не поддерживался в действительно старых версиях JSHint (например, v0.5.5, как исходный вопрос в 2012 году). Если вы не можете или не хотите использовать файл .jshintrc, вы можете добавить это в начало файла script:
/*globals $:false */
Существует также сокращенная опция jquint jQuery, как показано на странице JSHint.
Вы также можете добавить две строки к вашему .jshintrc
"globals": {
"$": false,
"jQuery": false
}
Это говорит jshint, что есть две глобальные переменные.
Все, что вам нужно сделать, это установить "jquery": true
в .jshintrc
.
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:
В разделе "Окружения" в разделе "Параметры файла/Настройки/JavaScript/Кодекс качества /JSHint " установите флажок jQuery.
Вместо того, чтобы рекомендовать обычный "отключить глобальные переменные JSHint", я рекомендую использовать шаблон модуля, чтобы исправить эту проблему. Он сохраняет ваш код "содержащимся" и дает повышение производительности (на основе Paul Irish "10 вещей, которые я узнал о JQuery" ).
Я предпочитаю писать мои шаблоны модулей следующим образом:
(function (window) {
// Handle dependencies
var angular = window.angular,
$ = window.$,
document = window.document;
// Your application code
}(window))
Вы можете получить эти другие преимущества производительности (объясняется более здесь):
window
. например window.alert()
стать m.alert()
.window
.window
, что предотвращает дорогостоящий обход цепочки областей, например. window.alert()
(быстрее) по сравнению с alert()
(медленнее).Если вы используете редактор IntelliJ, под
Вы можете ввести что угодно, например console:false
, и оно добавит это в список (.jshintrc), а также - как глобальное.
Чтобы исправить эту ошибку при использовании онлайн-реализации JSHint:
Вы, вероятно, хотите сделать следующее,
const $ = window.$
чтобы избежать ошибки бросания линтинга.