Następujący JS:
(function() {
"use strict";
$("#target").click(function(){
console.log("clicked");
});
}());
Wydajność:
test.js: line 5, col 3, '$' is not defined.
Po strzępieniu za pomocą JSHint 0.5.5. Jakieś pomysły?
javascript
jquery
lint
jshint
Izocyjanian allilu
źródło
źródło
jquery.js
do swojej strony?$
jest niezdefiniowany.Odpowiedzi:
Jeśli używasz stosunkowo najnowszej wersji JSHint, ogólnie preferowanym podejściem jest utworzenie pliku .jshintrc w katalogu głównym projektu i umieszczenie w nim tej konfiguracji:
To oświadcza JSHint, że $ jest zmienną globalną, a fałsz wskazuje, że nie należy jej zastępować.
Plik .jshintrc nie był obsługiwany w naprawdę starych wersjach JSHint (takich jak v0.5.5, podobnie jak oryginalne pytanie z 2012 roku). Jeśli nie możesz lub nie chcesz używać pliku .jshintrc, możesz dodać to u góry pliku skryptu:
Istnieje również skrótowa opcja „jquery” jshint, jak widać na stronie opcji JSHint .
źródło
/*global $:false, jQuery:false */
./* global ... */
? Zwykle importuję skrypt ze wszystkimi moimi funkcjami,main
więc kłopotliwe jest definiowanie jeden po drugim ...Możesz także dodać dwie linie do swojego .jshintrc
To mówi jshint, że istnieją dwie zmienne globalne.
źródło
Wszystko, co musisz zrobić, to ustawić
"jquery": true
w swoim.jshintrc
.Zgodnie z opisem opcji JSHint :
źródło
Oto szczęśliwa mała lista do umieszczenia w .jshintrc.
Dodam ją do tej listy w miarę upływu czasu.
źródło
Jeśli używasz edytora IntelliJ, takiego jak WebStorm, PyCharm, RubyMine lub IntelliJ IDEA:
W sekcji Środowiska pliku / ustawień / JavaScript / narzędzi jakości kodu / JSHint kliknij pole wyboru jQuery.
źródło
Zamiast zalecać zwykłe „wyłączanie globów JSHint”, zalecam użycie wzorca modułu w celu rozwiązania tego problemu. Utrzymuje twój kod „zawarty” i zwiększa wydajność (na podstawie „10 rzeczy, których dowiedziałem się o Jquery” Paula Irlanda ).
Zwykle zapisuję moje wzorce modułów w ten sposób:
Możesz uzyskać te inne korzyści związane z wydajnością (wyjaśniono więcej tutaj ):
window
deklaracja obiektowa również jest minimalizowana. np .window.alert()
zostaćm.alert()
.window
obiektu.window
właściwości lub metody, zapobiegając kosztownym przechodzeniom łańcucha zasięgu, np.window.alert()
(Szybszym) w porównaniu zalert()
(wolniejszym) działaniem.źródło
"}(window))
„w twoim przykładzie - miałem problemy również z jQuery i Highcharts). Nie znalazłem sposobu na wyłączenie tej opcji poza zdefiniowaniem globalnego pliku, który następnie pokonuje celbrowser: true
mówi JSHint, że oczekujesz środowiska przeglądarki (gdziewindow
jest już zdefiniowane).Jeśli używasz edytora IntelliJ, w sekcji
Możesz na przykład wpisać cokolwiek,
console:false
a doda to również do listy (.jshintrc) - jako globalną.źródło
Aby naprawić ten błąd podczas korzystania z implementacji JSHint online :
źródło
Prawdopodobnie chcesz wykonać następujące czynności,
aby uniknąć rzucania błędu kłaczkowania.
źródło