JavaScript er et tilgivende sprog. Noget af dets syntaks er valgfrit, og sproget gendannes efter fejl med mere ynde end mange andre. Men denne håndholdt kommer med en straf: det kan være lettere at introducere fejl, og inkonsekvent kode er sværere at læse.
Heldigvis, hvis du ønsker at udøve mere disciplin, er der en nem måde at gøre det på: streng tilstand. Strict mode er en måde at bede JavaScript om at reagere mere beslutsomt, når det støder på problemer i din kode.
Hvad er en streng tilstand?
Flere sprog bruger begrebet en streng tilstand: en tilstand, der evaluerer og kører kode mere stringent. Du er måske bekendt med HTML strict doctype, som forælder visse elementer og attributter.
Perl, et andet fortolket scriptsprog, har længe haft sin egen strenge tilstand. Denne tilstand forbyder visse typer usikre udtryk.
Hvordan bruger jeg streng tilstand i JavaScript?
Inde i et script skal du sætte en "brug streng"-erklæring lige øverst før andre udsagn:
// hele dette script vil være i streng tilstand
'brug streng';
Bemærk, at du kan inkludere en kommentar før den, men ingen udsagn. Du kan aktivere streng tilstand i en JavaScript-fil eller i begyndelsen af en scriptblok i en HTML-fil. Du kan også aktivere streng tilstand på en funktion-for-funktion basis:
function strict() {
// Syntaks for streng tilstand på funktionsniveau
'brug streng';
return "Denne funktion er streng";
}
function loose() {
return "Denne funktion er IKKE streng";
}
Når du har aktiveret streng tilstand, skal du sørge for at teste din kode. Hvis du arbejder med nettet, skal du åbne en JavaScript konsol, så du kan identificere eventuelle nye fejl.
Hvad gør JavaScripts strenge tilstand?
Kort sagt vil den strenge tilstand være mindre tilgivende over for visse typer problematisk kode. I stedet for at ignorere problemer og fortsætte udførelse, vil visse fejl standse scriptet. Dette er ofte sikrere end at fortsætte under uønskede omstændigheder.
Forhindrer utilsigtede globaler
Det bedste eksempel, som streng tilstand beskytter mod, er oprettelsen af utilsigtede globale variabler. I normal udførelse er denne kode:
myVar = 17;
Det vil oprette en egenskab ved navn myVar på det globale objekt, forudsat at du ikke tidligere har erklæret myVar. I en webbrowser er det globale objekt normalt vindue:
console.log (window.myVar);
>> 17
Hvis du inkluderer en "brug streng"-erklæring, vil du dog se en fejl i konsollen, noget som:
Ufanget referencefejl: myVar er ikke defineret
Grunden til, at dette er så nyttigt, er, at det opfanger et almindeligt tilfælde af stavefejl. Det er nemt at indtaste et variabelnavn forkert, og mange sprog ville opfange os på en sådan fejl.
Men JavaScript antager som standard blot omfanget af det globale objekt og fortsætter, som om intet er galt. Noget kode kan med vilje afhænge af den adfærd, hvilket er noget du skal være opmærksom på, når du beslutter dig for at bruge streng tilstand.
Se også: Sådan holder du din kode ren med objektindkapsling
Ekspliciterer fiasko
Noget adfærd i JavaScript fejler, men det gør det lydløst. Du kender måske ikke til sådanne fejl, medmindre du specifikt søger efter dem. For eksempel er NaN en speciel egenskab for det globale objekt, der repræsenterer et ugyldigt tal. Denne egenskab er skrivebeskyttet, men du kan stadig prøve at skrive til den:
NaN = 2;
>> 2
Men selvom det ser ud til, at opgaven lykkedes, gjorde den det ikke:
NaN
>> NaN
I streng tilstand får du en faktisk fejl, der fortæller dig, at du ikke kan tildele til NaN. Denne kode bruger en funktion, så du kan demonstrere streng tilstand i konsollen:
javascript
function badNaN() { "brug streng"; vindue. NaN = 2; }
>> udefineret
badNan()
>> Uncaught TypeError: Kan ikke tildele til skrivebeskyttet egenskab 'NaN' for objekt '#'
ved badNaN (:1:46)
ved :1:1
Dette er et klassisk eksempel, der viser, at selvom uvidenhed kan være lyksalighed, er det nogle gange bedre at vide, om noget går galt.
Advarer om duplikerede parametre
Det sidste eksempel omhandler en lidet kendt funktion af JavaScript. Det kan overraske dig at lære, at parameternavne ikke behøver at være unikke:
function dupeParam (a, a, c) { console.log (a); }
>> udefineret
dupeParam (2, 4, 8)
>> 4
Bemærk, at JavaScript tildeler den seneste værdi til en dubletparameter. Nu er denne adfærd ikke særlig nyttig. Faktisk ville det være mere nyttigt for JavaScript at fortælle os, at det er en fejl, og det er præcis, hvad streng tilstand gør:
function dupeParam (a, a, c) { "brug streng"; }
<< Ufanget SyntaxError: Duplikatparameternavn er ikke tilladt i denne sammenhæng
Brug streng tilstand for ekstra kodesikkerhed
God praksis og midler til at håndhæve dem går hånd i hånd. I nogle sammenhænge, såsom en professionel programmeringsrolle, vil du gerne udøve så meget disciplin som muligt. Selvom du bare arbejder på et hobby open source-projekt, foretrækker vedligeholderen måske at bruge streng tilstand som standard.
I sidste ende er det op til dig, men det er nyttigt at vide, at en hjælpende hånd er tilgængelig. Som programmør bør du altid være på udkig efter bedste praksis, og hvad du kan gøre for at håndhæve dem.
Din kode skal være klar og nem at vedligeholde. Her er flere andre programmeringsprincipper, der hjælper dig med at rydde op i din handling.
Læs Næste
- Programmering
- JavaScript
- Web-udvikling
- Programmeringssprog

Bobby er en teknologientusiast, der har arbejdet som softwareudvikler i det meste af to årtier. Han brænder for spil, arbejder som chefredaktør på Switch Player Magazine og er fordybet i alle aspekter af online publicering og webudvikling.
Abonner på vores nyhedsbrev
Tilmeld dig vores nyhedsbrev for tekniske tips, anmeldelser, gratis e-bøger og eksklusive tilbud!
Klik her for at abonnere