JavaScript är ett förlåtande språk. En del av dess syntax är valfritt, och språket återställs från fel med mer grym än många andra. Men denna handhållning kommer med ett straff: det kan vara lättare att introducera buggar och inkonsekvent kod är svårare att läsa.

Lyckligtvis, om du vill utöva mer disciplin, finns det ett enkelt sätt att göra det: strikt läge. Strikt läge är ett sätt att be JavaScript reagera mer beslutsamt när det stöter på problem i din kod.

Vad är ett strikt läge?

Flera språk använder konceptet med ett strikt läge: ett läge som utvärderar och kör kod mer rigoröst. Du kanske är bekant med HTML strict doctype, som tar bort vissa element och attribut.

Perl, ett annat tolkat skriptspråk, har länge haft sitt eget strikta läge. Detta läge förbjuder vissa typer av osäkra uttryck.

Hur använder jag strikt läge i JavaScript?

Inuti ett skript, sätt en "använd strikt"-sats högst upp, före alla andra uttalanden:

// hela detta skript kommer att vara i strikt läge
'använd strikt';

Observera att du kan inkludera en kommentar före den, men inga påståenden. Du kan aktivera strikt läge i en JavaScript-fil eller i början av ett skriptblock i en HTML-fil. Du kan också aktivera strikt läge funktion för funktion:

instagram viewer

function strict() {
// Syntax för strikt läge på funktionsnivå
'använd strikt';
return "Denna funktion är strikt";
}
function loose() {
return "Denna funktion är INTE strikt";
}

När du har aktiverat strikt läge, se till att du testar din kod. Om du arbetar med webben, öppna en JavaScript-konsol, så att du kan identifiera eventuella nya fel.

Vad gör JavaScripts strikta läge?

Kort sagt, det strikta läget kommer att vara mindre förlåtande för vissa typer av problematisk kod. Istället för att ignorera problem och fortsätta körningen kommer vissa fel att stoppa skriptet. Detta är ofta säkrare än att fortsätta under oönskade omständigheter.

Förhindrar oavsiktliga globaler

Det bästa exemplet som strikt läge skyddar mot är skapandet av oavsiktliga globala variabler. I normal körning, denna kod:

myVar = 17;

Det kommer att skapa en egenskap som heter myVar på det globala objektet, förutsatt att du inte tidigare har deklarerat myVar. I en webbläsare är det globala objektet vanligtvis ett fönster:

console.log (window.myVar);
>> 17

Om du inkluderar en "använd strikt"-sats kommer du dock att se ett fel i konsolen, något i stil med:

Uncaught ReferenceError: myVar är inte definierat

Anledningen till att detta är så användbart är att det upptäcker ett vanligt fall av stavfel. Det är lätt att skriva fel på ett variabelnamn, och många språk skulle fånga oss på ett sådant fel.

Men JavaScript, som standard, antar helt enkelt omfattningen av det globala objektet och fortsätter som om inget är fel. Viss kod kan avsiktligt bero på det beteendet, vilket är något du bör vara medveten om när du bestämmer dig för att använda strikt läge.

Se även: Hur du håller din kod ren med objektinkapsling

Gör misslyckande explicit

Vissa beteenden i JavaScript misslyckas, men det gör det tyst. Du kanske inte känner till sådana fel om du inte specifikt letar efter dem. Till exempel är NaN en speciell egenskap hos det globala objektet som representerar ett ogiltigt tal. Den här egenskapen är skrivskyddad, men du kan fortfarande försöka skriva till den:

NaN = 2;
>> 2

Men även om det ser ut som om uppdraget lyckades, gjorde det inte:

NaN
>> NaN

I strikt läge får du ett verkligt fel som säger att du inte kan tilldela till NaN. Den här koden använder en funktion så att du kan demonstrera strikt läge i konsolen:

javascript
function badNaN() { "använd strikt"; fönster. NaN = 2; }
>> odefinierat
badNan()
>> Uncaught TypeError: Kan inte tilldela till skrivskyddad egenskap 'NaN' för objekt '#'
vid badNaN (:1:46)
vid :1:1

Detta är ett klassiskt exempel som visar att även om okunnighet kan vara lycka, är det ibland bättre att veta om något går fel.

Varnar för dubbletter av parametrar

Det sista exemplet handlar om en föga känd funktion i JavaScript. Det kan förvåna dig att lära dig att parameternamn inte behöver vara unika:

function dupeParam (a, a, c) { console.log (a); }
>> odefinierat
dupeParam (2, 4, 8)
>> 4

Observera att JavaScript tilldelar det senaste värdet till en dubblettparameter. Nu är detta beteende inte särskilt användbart. Faktum är att det skulle vara mer användbart för JavaScript att berätta för oss att det är ett fel, och det är precis vad strikt läge gör:

function dupeParam (a, a, c) { "använd strikt"; }
<< Uncaught SyntaxError: Duplicerat parameternamn är inte tillåtet i detta sammanhang

Använd strikt läge för extra kodsäkerhet

God praxis och metoder för att upprätthålla dem går hand i hand. I vissa sammanhang, till exempel en professionell programmeringsroll, vill du utöva så mycket disciplin som möjligt. Även om du bara arbetar med ett hobbyprojekt med öppen källkod, kanske underhållaren föredrar att använda strikt läge som standard.

I slutändan är det upp till dig, men det är användbart att veta att en hjälpande hand finns tillgänglig. Som programmerare bör du alltid vara på jakt efter bästa praxis och vad du kan göra för att upprätthålla dem.

10 grundläggande programmeringsprinciper som varje programmerare måste känna till

Din kod ska vara tydlig och lätt att underhålla. Här är flera andra programmeringsprinciper som hjälper dig att rensa upp i din handling.

Läs Nästa

Dela med sigTweetE-post
Relaterade ämnen
  • Programmering
  • JavaScript
  • Webbutveckling
  • Programmeringsspråk
Om författaren
Bobby Jack (62 publicerade artiklar)

Bobby är en teknikentusiast som arbetat som mjukvaruutvecklare under de flesta av två decennier. Han brinner för spel, arbetar som chefredaktör på Switch Player Magazine och är fördjupad i alla aspekter av onlinepublicering och webbutveckling.

Mer från Bobby Jack

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!

Klicka här för att prenumerera