nincs semmi baj a $
változókban való használatával. Nem csinálnám szándékosan minden változón, de ez még mindig érvényes szintaxis. a jQuery az egyik példa, ahol a $
változónévként használatos. Ezért is “a Chrome dev eszközök nem mindig látják, hogy ez Javascript hiba”, mert eleve nincs hiba.
ha félsz az írás kódot, mint:
var demo = function demo() { var a = 123; ... $a = 456; // A new variable is created in global scope.}
ezután stílusellenőrzőt kell használnia, például jsLint, jsHint vagy Google Closure Linter. Ezek közül melyik? Ez rajtad múlik, hogy a választás. Hogy segítsen, hogy itt van néhány megjegyzés:
stílus
Google bezárása Linter következik Google JavaScript stílus útmutató, ismert, hogy ügyesen tenni. Jó ötlet egy jól ismert stílus használata a JavaScript vagy a hat másik nyelv bármelyikéhez: amikor megosztja kódját, vagy új fejlesztőt vesz fel, valószínű, hogy már ismerik ezt a stílust.
sok fejlesztő ismeri Douglas Crockford stílusát is. Ezt a stílust részletesen elmagyarázza a JavaScript: the Good Parts, egy könyvet érdemes megvenni bárki, aki JavaScript-rel dolgozik.
ami a jsHint-et illeti, nem igazán találom, hogy milyen konvenciókat használnak, és maga a weboldal úgy tűnik, hogy elkerüli a témát. Talán kihagytam valamit.
az IDEs támogatása
mind a jsLint, mind a jsHint támogatja a PhpStorm. Ez a helyzet a Google Closure Linter esetében is.
környezet
a Google Closure Linter egy sor eszköz. Ha már használja a Google Closure Compiler-t vagy a Google Closure Library-t, akkor jobb, ha a Closure Linter-t választja más eszközök felett.
szigorúság
a jsLint ismert, hogy szigorú. a jsHint megengedőbb, ami nem mindig jó dolog. Például a JSLint for jshint villájának egyik oka egy olyan cikkben található, amely rossz kódot mutat, amely hibát okoz a jslintben, de nem a jshintben:
/*global jQuery */// Example taken from jQuery 1.4.2 sourcejQuery.extend({ /* ... */ isEmptyObject: function( obj ) { for ( var name in obj ) { return false; } return true; } /* ... */});
a kód rossz, mert úgy tűnik, hogy a JavaScript blokk hatókörrel rendelkezik, míg nem. lásd JavaScript: a jó részek, p. 102, A függelék: Szörnyű Részek, Távcső. Más szavakkal, ha a kódot a nyelv ismerete nélkül nézzük, arra számítunk, hogy name
nem lesz látható a hurokon kívül, miközben látható marad.
ami a Google Closure Lintert illeti, úgy gondolom, hogy valahol a jsLint és a jsHint között van, de nincs elég információm ennek alátámasztására.
következtetés
elkerülném a jsHint-et: túl megengedő, ami azt jelenti, hogy nem talál potenciális hibákat, amelyeket a többi Linter észlel. A használt stílus útmutatót nehéz megtalálni.
a jsLint és a Google Closure Linter között a választás nem egyértelmű. Mindkettőt szakértők írják, mindkettő szigorú, jól leírt stílus útmutatót követ, amelyet már több ezer fejlesztő követ. Használja mindkettőt egy ideig, majd válasszon egyet, amely praktikusabb az Ön számára.