Die folgende JS:
(function() {
"use strict";
$("#target").click(function(){
console.log("clicked");
});
}());
Ausbeuten:
test.js: line 5, col 3, '$' is not defined.
Bei Flusen mit JSHint 0.5.5. Irgendwelche Ideen?
javascript
jquery
lint
jshint
Allylisocyanat
quelle
quelle
jquery.js
Ihrer Seite hinzugefügt ?$
ist undefiniert.Antworten:
Wenn Sie eine relativ aktuelle Version von JSHint verwenden, besteht der allgemein bevorzugte Ansatz darin, eine .jshintrc-Datei im Stammverzeichnis Ihres Projekts zu erstellen und diese Konfiguration darin abzulegen:
Dies erklärt JSHint, dass $ eine globale Variable ist, und false gibt an, dass sie nicht überschrieben werden soll.
Die .jshintrc-Datei wurde in wirklich alten Versionen von JSHint nicht unterstützt (z. B. v0.5.5 wie die ursprüngliche Frage von 2012). Wenn Sie die .jshintrc-Datei nicht verwenden können oder möchten, können Sie diese oben in der Skriptdatei hinzufügen:
Es gibt auch eine Kurzform "jquery" jshint-Option, wie auf der Seite mit den JSHint-Optionen angezeigt .
quelle
/*global $:false, jQuery:false */
./* global ... */
? Normalerweise importiere ich ein Skript mit all meinen Funktionen in mein Skript,main
daher ist es umständlich, eins nach dem anderen zu definieren ...Sie können Ihrer .jshintrc auch zwei Zeilen hinzufügen
Dies teilt jshint mit, dass es zwei globale Variablen gibt.
quelle
Alles was Sie tun müssen, ist
"jquery": true
in Ihrem eingestellt.jshintrc
.Gemäß der JSHint-Optionsreferenz :
quelle
Hier ist eine fröhliche kleine Liste, die Sie in Ihre .jshintrc einfügen können.
Ich werde sie im Laufe der Zeit zu dieser Liste hinzufügen.
quelle
Wenn Sie einen IntelliJ-Editor wie WebStorm, PyCharm, RubyMine oder IntelliJ IDEA verwenden:
Aktivieren Sie im Abschnitt Umgebungen von Datei / Einstellungen / JavaScript / Tools für die Codequalität / JSHint das Kontrollkästchen jQuery.
quelle
Statt der üblichen „Schalten Sie den JSHint Globals“ empfehlen, empfehle ich mit dem Modul Muster dieses Problem zu beheben. Es hält Ihren Code "enthalten" und steigert die Leistung (basierend auf Paul Irishs "10 Dingen, die ich über Jquery gelernt habe" ).
Ich neige dazu, meine Modulmuster so zu schreiben:
Sie können diese anderen Leistungsvorteile erhalten ( hier mehr erklärt ):
window
Objektdeklaration minimiert. zBwindow.alert()
werdenm.alert()
.window
Objekts.window
Eigenschaft oder Methode aufrufen , und verhindern so das teure Durchlaufen der Scope-Kette, z. B.window.alert()
(schneller) gegenüberalert()
(langsamer) Leistung.quelle
"}(window))
"in Ihrem Beispiel - ich hatte auch Probleme mit jQuery und Highcharts). Ich habe keine andere Möglichkeit gefunden, sie zu deaktivieren, als eine globale Variable für die Datei zu definieren. was dann den Zweck besiegt.browser: true
teilt JSHint mit, dass Sie eine Browserumgebung erwarten (wowindow
bereits definiert).Wenn Sie einen IntelliJ-Editor verwenden, klicken Sie unter
Sie können beispielsweise alles
console:false
eingeben, und das wird auch der Liste (.jshintrc) hinzugefügt - als global.quelle
So beheben Sie diesen Fehler bei Verwendung der Online-JSHint-Implementierung :
quelle
Sie möchten wahrscheinlich Folgendes tun:
um zu vermeiden, dass Flusenfehler auftreten.
quelle