Es ist nichts falsch daran, $
in Variablen zu verwenden. 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 Dev Tools nicht immer sehen, dass dies ein Javascript-Fehler ist“, weil es überhaupt keinen Fehler gibt.
Wenn Sie Angst haben, Code wie:
var demo = function demo() { var a = 123; ... $a = 456; // A new variable is created in global scope.}
dann müssen Sie einen Stilprüfer wie JSLint, jsHint oder Google Closure Linter verwenden. Welche davon? Es liegt an Ihnen, eine Wahl zu treffen. Um Ihnen dabei zu helfen, hier ein paar Hinweise:
Stil
Google Javascript Linter folgt dem Google JavaScript Style Guide, der als geschickt gemacht bekannt ist. Die Verwendung eines bekannten Stils für JavaScript oder eine von sechs anderen Sprachen ist eine gute Idee: Wenn Sie Ihren Code freigeben oder einen neuen Entwickler einstellen, sind diese wahrscheinlich bereits mit diesem Stil vertraut.
Viele Entwickler sind auch mit dem Crockford-Stil vertraut. Dieser Stil wird ausführlich in JavaScript erklärt: Die guten Teile, ein Buch, das von jedem gekauft werden kann, der mit JavaScript arbeitet.
Was jsHint betrifft, kann ich nicht wirklich finden, 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 der Fall bei Google Closure Linter.
Umgebung
Google Closure Linter gehört zu einer Reihe von Tools. Wenn Sie bereits den Google Closure Compiler oder die Google Closure Library verwenden, sollten Sie Closure Linter vor anderen Tools auswählen.
Strenge
JSLint ist bekanntermaßen streng. jsHint ist freizügiger, was nicht immer eine gute Sache ist. Zum Beispiel wird einer der Gründe, JSLint für jsHint zu forken, in einem Artikel erklärt, der schlechten Code zeigt, der einen Fehler in JSLint, aber nicht in jsHint erzeugt:
/*global jQuery */// Example taken from jQuery 1.4.2 sourcejQuery.extend({ /* ... */ isEmptyObject: function( obj ) { for ( var name in obj ) { return false; } return true; } /* ... */});
Der Code ist schlecht, weil er so aussieht, als hätte JavaScript einen Blockbereich, während er dies nicht getan hat. Siehe JavaScript: Die guten Teile, S. 102, Anhang A: Schreckliche Teile, Umfang. Mit anderen Worten, wenn wir den Code betrachten, ohne die Sprache zu kennen, erwarten wir, dass name
außerhalb der Schleife nicht sichtbar ist, während er sichtbar bleibt.
Was Google Closure Linter betrifft, glaube ich, dass es irgendwo in der Mitte 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 freizügig, was bedeutet, dass es keine potenziellen Fehler finden würde, die die anderen Linter erkennen würden. Der verwendete Styleguide ist schwer zu finden.
Unter JSLint und Google Closure Linter ist die Wahl nicht offensichtlich. Beide werden von Experten geschrieben, beide folgen strengen, gut beschriebenen Styleguides, denen bereits Tausende von Entwicklern folgen. Verwenden Sie beide für einige Zeit, dann wählen Sie eine, die für Sie praktischer ist.