Es ist nichts Falsches an der Verwendung $
in Variablen. Ich würde es nicht absichtlich für jede Variable tun, aber es ist immer noch eine gültige Syntax. jQuery ist eines der Beispiele, in denen $
als Variablenname verwendet wird. Das ist auch der Grund, warum "Chrome-Entwickler-Tools sehen, dass dies nicht immer ein Javascript-Fehler ist" , weil es überhaupt keinen Fehler gibt.
Wenn Sie Angst haben, Code wie folgt zu schreiben:
var demo = function demo() {
var a = 123;
...
$a = 456; // A new variable is created in global scope.
}
Dann müssen Sie einen Style Checker wie jsLint , jsHint oder Google Closure Linter verwenden . Welcher von denen? Es liegt an Ihnen, eine Wahl zu treffen. Um Ihnen dabei zu helfen, finden Sie hier einige Hinweise:
Stil
Google Closure Linter folgt dem Google JavaScript Style Guide , der bekanntermaßen geschickt erstellt wurde. Es ist eine gute Idee, einen bekannten Stil für JavaScript oder eine der sechs anderen Sprachen zu verwenden : Wenn Sie Ihren Code freigeben oder einen neuen Entwickler einstellen, sind diese wahrscheinlich bereits mit diesem Stil vertraut.
Viele Entwickler sind auch mit dem Stil von Douglas Crockford vertraut. Dieser Stil wird in JavaScript ausführlich erklärt : The Good Parts , ein Buch, das sich für jeden lohnt, der mit JavaScript arbeitet.
Was jsHint angeht, kann ich nicht wirklich feststellen, welche Konventionen verwendet werden, und die Website selbst scheint es zu vermeiden, über dieses Thema zu sprechen. Vielleicht habe ich etwas verpasst.
Unterstützung durch IDEs
Sowohl jsLint als auch jsHint werden von PhpStorm unterstützt. Dies ist auch bei Google Closure Linter der Fall .
Umgebung
Google Closure Linter gehört zu einer Reihe von Tools . Wenn Sie bereits Google Closure Compiler oder Google Closure Library verwenden , sollten Sie Closure Linter vor anderen Tools auswählen.
Strenge
Es ist bekannt, dass jsLint streng ist. jsHint ist freizügiger, was nicht immer gut ist. Einer der Gründe, jsLint für jsHint zu forken, wird beispielsweise in einem Artikel erläutert, der fehlerhaften Code zeigt, der einen Fehler in jsLint, aber nicht in jsHint erzeugt:
/*global jQuery */
// Example taken from jQuery 1.4.2 source
jQuery.extend({
/* ... */
isEmptyObject: function( obj ) {
for ( var name in obj ) {
return false;
}
return true;
}
/* ... */
});
Der Code ist schlecht, weil es so aussieht, als ob JavaScript einen Blockbereich hat, während dies nicht der Fall ist. Siehe JavaScript: Die guten Teile, S. 32. 102, Anhang A: Schreckliche Teile, Geltungsbereich. Mit anderen Worten, wenn wir den Code betrachten, ohne die Sprache zu kennen, ist zu erwarten name
, dass er außerhalb der Schleife nicht sichtbar ist, während er sichtbar bleibt.
Was Google Closure Linter angeht, glaube ich, dass es irgendwo zwischen jsLint und jsHint liegt, aber ich habe nicht genug Informationen, um das zu unterstützen.
Fazit
Ich würde jsHint vermeiden: Es ist zu nachgiebig, was bedeutet, dass es keine potenziellen Fehler findet, die die anderen Linters erkennen würden. Der verwendete Styleguide ist schwer zu finden.
Bei jsLint und Google Closure Linter ist die Wahl nicht offensichtlich. Beide sind von Experten verfasst, beide folgen strengen, gut beschriebenen Styleguides, die bereits von Tausenden von Entwicklern befolgt wurden. Verwenden Sie beide für einige Zeit, und wählen Sie dann eine aus, die für Sie praktischer ist.