Det er ingenting galt i å bruke $
i variabler. Jeg ville ikke gjøre det med vilje på hver variabel, men det er fortsatt en gyldig syntaks. jQuery er et av eksemplene der $
brukes som et variabelnavn. Det er også derfor «Chrome dev tools ikke alltid ser dette Er En Javascript-feil», fordi det ikke er noen feil i utgangspunktet.
hvis du er redd for å skrive kode som:
var demo = function demo() { var a = 123; ... $a = 456; // A new variable is created in global scope.}
da må du bruke en stilkontroll, som jsLint, jsHint eller Google Closure Linter. Hvilken av dem? Det er opp til deg å gjøre et valg. For å hjelpe deg med det, er det noen notater:
Stil
Google Closure Linter følger Google JavaScript Style Guide, kjent for å være smart gjort. Å bruke En kjent Stil For JavaScript eller et av seks andre språk er en god ide: når du deler koden din eller ansetter en ny utvikler, er sjansen stor for at de allerede er kjent med denne stilen.
Mange utviklere er kjent Med Douglas Crockford stil også. Denne stilen er forklart i Detalj I JavaScript: De Gode Delene, en bok verdt kjopes av alle som jobber med JavaScript.
når det gjelder jsHint, kan jeg egentlig ikke finne hvilke konvensjoner som brukes, og selve nettstedet ser ut til å unngå å snakke om det emnet. Kanskje jeg gikk glipp av noe.
Støtte av Ide
både jsLint og jsHint støttes Av PhpStorm. Dette er Også Tilfelle Av Google Closure Linter.
Miljø
Google Closure Linter er en av en rekke verktøy. Hvis Du allerede bruker Google Closure Compiler Eller Google Closure Library, ville Det være å foretrekke å velge Closure Linter over andre verktøy.
Strenghet
jsLint er kjent for å være streng. jsHint er mer permissiv, noe som ikke alltid er bra. For eksempel er en av grunnene til å gaffel jsLint for jsHint forklart i en artikkel som viser dårlig kode som vil gi en feil i jsLint, men ikke i jsHint:
/*global jQuery */// Example taken from jQuery 1.4.2 sourcejQuery.extend({ /* ... */ isEmptyObject: function( obj ) { for ( var name in obj ) { return false; } return true; } /* ... */});
koden er dårlig, fordi Det ser Ut Som JavaScript har blokkomfang, mens det ikke har det. Se JavaScript: The Good Parts, s. 102, Vedlegg A: Forferdelige Deler, Omfang. Med andre ord, ser på koden uten å vite språket, forventer vi at name
ikke er synlig utenfor løkken, mens den forblir synlig.
Når Det Gjelder Google Closure Linter, tror jeg at Det er et sted i midten mellom jsLint og jsHint, men jeg har ikke nok informasjon til å støtte det.
Konklusjon
jeg ville unngå jsHint: det er for permissivt, noe som betyr at det ikke ville finne potensielle feil de andre linters ville oppdage. Stilguiden som brukes er vanskelig å finne.
Blant jsLint Og Google Closure Linter er valget ikke åpenbart. Begge er skrevet av eksperter, begge følger strenge, godt beskrevet stilguide allerede etterfulgt av tusenvis av utviklere. Bruk begge for en stund, og velg deretter en som er mer praktisk for deg.