JavaScript er et tilgivende språk. Noe av syntaksen er valgfri, og språket gjenoppretter seg etter feil med mer eleganthet enn mange andre. Men denne håndholdte kommer med en straff: det kan være lettere å introdusere feil, og inkonsekvent kode er vanskeligere å lese.
Heldigvis, hvis du ønsker å utøve mer disiplin, er det en enkel måte å gjøre det på: streng modus. Strengt modus er en måte å be JavaScript om å reagere mer bestemt når det støter på problemer i koden din.
Hva er en streng modus?
Flere språk bruker konseptet med en streng modus: en modus som evaluerer og kjører kode mer strengt. Du er kanskje kjent med HTML strict doctype, som avvikler visse elementer og attributter.
Perl, et annet tolket skriptspråk, har lenge hatt sin egen strenge modus. Denne modusen forbyr visse typer usikre uttrykk.
Hvordan bruker jeg streng modus i JavaScript?
Inne i et skript, legg en "bruk streng"-setning rett øverst, før andre utsagn:
// Hele dette skriptet vil være i streng modus
'bruk streng';
Merk at du kan inkludere en kommentar før den, men ingen uttalelser. Du kan aktivere streng modus i en JavaScript-fil, eller i begynnelsen av en skriptblokk i en HTML-fil. Du kan også aktivere streng modus på funksjon for funksjon:
function strict() {
// Syntaks for streng modus på funksjonsnivå
'bruk streng';
return "Denne funksjonen er streng";
}
function loose() {
return "Denne funksjonen er IKKE streng";
}
Når du har aktivert streng modus, sørg for at du tester koden din. Hvis du jobber med nettet, åpner du en JavaScript-konsoll, slik at du kan identifisere eventuelle nye feil.
Hva gjør JavaScripts strenge modus?
Kort sagt, den strenge modusen vil være mindre tilgivende for visse typer problematisk kode. I stedet for å ignorere problemer og fortsette kjøringen, vil visse feil stoppe skriptet. Dette er ofte tryggere enn å fortsette under uønskede omstendigheter.
Forhindrer utilsiktede globaler
Det beste eksemplet som streng modus beskytter mot, er opprettelsen av tilfeldige globale variabler. I normal utførelse, denne koden:
minVar = 17;
Det vil opprette en egenskap kalt myVar på det globale objektet, forutsatt at du ikke tidligere har erklært myVar. I en nettleser er det globale objektet vanligvis vindu:
console.log (window.myVar);
>> 17
Hvis du inkluderer en "bruk streng"-setning, vil du imidlertid se en feil i konsollen, noe som:
Ufanget referansefeil: myVar er ikke definert
Grunnen til at dette er så nyttig er at det fanger opp et vanlig tilfelle av skrivefeil. Det er lett å feilskrive et variabelnavn, og mange språk vil fange oss opp på en slik feil.
Men JavaScript, som standard, antar ganske enkelt omfanget av det globale objektet og fortsetter som om ingenting er galt. Noe kode kan med vilje avhenge av den oppførselen, noe du bør være oppmerksom på når du bestemmer deg for å bruke streng modus.
Se også: Hvordan holde koden din ren med objektinnkapsling
Gjør feil eksplisitt
Noe atferd i JavaScript feiler, men det gjør det stille. Du vet kanskje ikke om slike feil med mindre du spesifikt ser etter dem. For eksempel er NaN en spesiell egenskap for det globale objektet som representerer et ugyldig tall. Denne egenskapen er skrivebeskyttet, men du kan fortsatt prøve å skrive til den:
NaN = 2;
>> 2
Men selv om det ser ut som om den oppgaven lyktes, gjorde den det ikke:
NaN
>> NaN
I streng modus vil du få en faktisk feil som forteller deg at du ikke kan tilordne til NaN. Denne koden bruker en funksjon slik at du kan demonstrere streng modus i konsollen:
javascript
function badNaN() { "bruk streng"; vindu. NaN = 2; }
>> udefinert
badNan()
>> Ufanget TypeError: Kan ikke tilordne til skrivebeskyttet egenskap 'NaN' til objekt '#'
ved badNaN (:1:46)
på :1:1
Dette er et klassisk eksempel som viser at selv om uvitenhet kan være lykke, er det noen ganger bedre å vite om noe går galt.
Advarer om dupliserte parametere
Det siste eksemplet omhandler en lite kjent funksjon i JavaScript. Det kan overraske deg å finne ut at parameternavn ikke trenger å være unike:
funksjon dupeParam (a, a, c) { console.log (a); }
>> udefinert
dupeParam (2, 4, 8)
>> 4
Vær oppmerksom på at JavaScript tildeler den siste verdien til en duplikatparameter. Nå er ikke denne oppførselen spesielt nyttig. Faktisk ville det være mer nyttig for JavaScript å fortelle oss at det er en feil, og det er akkurat det streng modus gjør:
function dupeParam (a, a, c) { "bruk streng"; }
<< Uncatched SyntaxError: Duplikatparameternavn er ikke tillatt i denne sammenhengen
Bruk streng modus for ekstra kodesikkerhet
God praksis og midler for å håndheve dem går hånd i hånd. I noen sammenhenger, for eksempel en profesjonell programmeringsrolle, vil du trene så mye disiplin som mulig. Selv om du bare jobber med et hobbyprosjekt med åpen kildekode, kan vedlikeholderen foretrekke å bruke streng modus som standard.
Til syvende og sist er det opp til deg, men det er nyttig å vite at en hjelpende hånd er tilgjengelig. Som programmerer bør du alltid være på utkikk etter beste praksis og hva du kan gjøre for å håndheve dem.
Koden din skal være klar og enkel å vedlikeholde. Her er flere andre programmeringsprinsipper for å hjelpe deg med å rydde opp.
Les Neste
- Programmering
- JavaScript
- Webutvikling
- Programmerings språk

Bobby er en teknologientusiast som jobbet som programvareutvikler i det meste av to tiår. Han er lidenskapelig opptatt av spill, jobber som sjefredaktør i Switch Player Magazine, og er fordypet i alle aspekter av online publisering og nettutvikling.
Abonner på vårt nyhetsbrev
Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!
Klikk her for å abonnere