Hvornår skal du bruge dine JavaScript-konstanter med store bogstaver?

Mange guider i JavaScript-stil foreslår, at du bruger store navne. Personligt ser jeg sjældent denne konvention brugt, hvor jeg troede, den skulle være. Dette var fordi min definition af en konstant var en smule slukket. Jeg besluttede at grave lidt og blive lidt mere fortrolig med denne konvention.

Hvordan definerer vi udtrykket "konstant"?

I programmering, en konstant det noget, der ikke ændrer sig.

Det er en værdi, der ikke kan ændres af programmet under normal udførelse.

Så giver JavaScript os en måde at erklære en værdi, der ikke kan ændres? Lad os se på rødderne til denne konvention, inden vi besvarer dette.

Kapitaliseringskonventionen har rødder i C

C er et kompileret sprog. Dette betyder, at et andet program konverterer al din kode til maskinkode, før den kører.

JavaScript er derimod et fortolket sprog. En tolk læser din kode, linje for linje, når den kører.

Forskellen mellem kompilering og fortolkning spiller en rolle i, hvordan vi erklærer konstante værdier i C.

I C kan jeg erklære en variabel som denne:

int hoursInDay = 24;

Eller en konstant som denne:

#define hoursInDay 24

Det andet eksempel kaldes en symbolsk konstant . Symbolske konstanter kan være en række af tegn, en numerisk konstant eller en streng. Disse kaldes også primitive værdier. De primitive værdier i JavaScript er strenge, tal, booleanske, null, udefineret, symbol (ikke at forveksle med symbolske konstanter) og big int.

Lad os nu se på kompilering igen.

Før kompilering er der en præ-kompileringsfase. Her erstatter præ-compileren alle forekomster af symbolske konstanter med den respektive værdi. Compileren ved aldrig, at programmøren skrev hoursInDay. Det ser kun antallet 24.

Kapitalisering hjælper programmøren med at se disse virkelig konstante værdier.

#define HOURS_IN_DAY 24

JavaScript-konstanter er forskellige fra symbolske konstanter

Før ES6 lagrede vi de fleste værdier i variabler, selv de værdier, som du ønskede at være konstant.

Kapitalisering hjalp os med at se værdier, vi ønskede at forblive konstante.

var HOURS_IN_DAY = 24; var hoursRemaining = currentHour - HOURS_IN_DAY; var MY_NAME = 'Brandon'; MY_NAME = ... // oops don't want to do this.

ES6 introducerede erklæringen, const som ikke er en "konstant" i reneste forstand.

ES6 tilføjede vilkårene constog letsom måder at oprette variabler med forskellige intentioner.

Med disse to vilkår tror du måske, at vi enten:

  1. behøver ikke at kapitalisere noget, da vi tydeligt kan se, hvilke variabler der er beregnet til at forblive de samme, eller
  2. vi bør kapitalisere alt, hvad vi erklærer med const.

Per definition constopretter en konstant, der er en skrivebeskyttet reference til en værdi. Dette betyder ikke, at den værdi, den besidder, er uforanderlig. Det siger kun, at variabel-id'et ikke kan tildeles igen.

Med andre ord kan nogle constreferencer ændre sig.

const firstPerson = { favoriteNumber: 10, }; const secondPerson = firstPerson; console.log(secondPerson.favoriteNumber); //10 firstPerson.favoriteNumber +=1; console.log(secondPerson.favoriteNumber); //11

Ovenstående eksempel viser, at erklæringen constikke sikrer, at variablen er uforanderlig.

constforhindrer kun os i at forsøge at omfordele variabelnavnet. Det forhindrer ikke objektets egenskab i at ændre sig. Husk: objekter er forbipasserende.

// "TypeError: Assignment to constant variable."secondPerson = 'something else'; const secondPerson = 'Me' secondPerson = 'something else';

Så for JavaScript er vi nødt til at gå ud over blot at lede efter en consterklæring. Vi er nødt til at stille to spørgsmål for at afgøre, om en variabel er en konstant:

  1. Er værdien af ​​variablen primitiv?
  2. Har vi til hensigt at holde variabelnavnet peget på den samme værdi i hele vores program?

Hvis svaret er ja på begge dele, skal vi erklære variablen med constog muligvis bruge store bogstaver i navnet.

Bemærk, at jeg sagde "må." Ånden i dette stævne kommer fra forskellige sprog, der havde faktiske konstanter. JavaScript ikke. I det mindste i den reneste forstand. Det kan være grunden til, at du ser denne konvention mindre ofte end du kunne forvente. Airbnb har en fantastisk sektion i deres stilguide med deres optagelse her.

Det vigtigste takeaway er at genkende at definere en konstant i JavaScript skal omfatte programmørens intentioner.

Derudover giver ikke alle konventioner fra et sprog mening på et andet sprog. Endelig kan jeg kun forestille mig, at mange konventioner blev brugt længe før IDE'er havde de muligheder, de har i dag. Jeg er overbevist om, at min IDE har glæde ved at fortælle mig, at jeg tager fejl. Det sker meget.

Tak for læsningen!

woz

Følg mig på Twitter.

Bemærkninger

  • Du undrer dig måske over, hvorfor jeg ikke brugte PInogen af ​​disse eksempler. Akronymer - især akronymer på to bogstaver - har tendens til enten altid at være stort eller altid med små bogstaver efter konvention.