Számos JavaScript stílusú útmutató javasolja az állandó nevek nagybetűs írását. Személy szerint ritkán látom ezt a konvenciót ott használni, ahol azt gondoltam. Ez azért volt, mert az állandó definícióm kissé eltért. Úgy döntöttem, hogy ásni fogok egy kicsit, és kicsit jobban megismerem ezt a konvenciót.
Hogyan definiálhatjuk az „állandó” kifejezést?
A programozás során állandó ez, ami nem változik.
Ez egy olyan érték, amelyet a program a normál futtatás során nem módosíthat.Tehát a JavaScript lehetővé teszi számunkra, hogy olyan értéket deklaráljunk, amely nem változtatható meg? Mielőtt erre válaszolunk, nézzük meg ennek a konvenciónak a gyökereit.
A nagybetűs írásmód C-ben gyökerezik
A C egy összeállított nyelv. Ez azt jelenti, hogy egy másik program futtatása előtt az összes kódot konvertálja gépi kódgá.
A JavaScript viszont értelmezett nyelv. Egy tolmács futás közben soronként olvassa el a kódot.
Az összeállítás és az értelmezés közötti különbség szerepet játszik abban, hogyan deklaráljuk az állandó értékeket C-ben.
C-ben deklarálhatok egy ilyen változót:
int hoursInDay = 24;
Vagy egy ilyen állandó:
#define hoursInDay 24
A második példát szimbolikus állandónak nevezzük . A szimbolikus állandók lehetnek karakterek, numerikus konstansok vagy karakterláncok. Ezeket primitív értékeknek is nevezzük. A JavaScript primitív értékei: karakterláncok, számok, logikai értékek, null, undefined, szimbólum (nem tévesztendő össze a szimbolikus konstansokkal) és nagy int.
Most nézzük át az összeállítást.
Az összeállítás előtt van egy előzetes fordítási szakasz. Itt az elő-fordító a szimbolikus állandók összes példányát lecseréli a megfelelő értékre. A fordító soha nem tudja, hogy a programozó írt hoursInDay
. Csak a számot látja 24
.
A nagybetűs írás segít a programozónak meglátni ezeket a valóban állandó értékeket.
#define HOURS_IN_DAY 24
A JavaScript konstansok különböznek a szimbolikus konstansoktól
Az ES6 előtt a legtöbb értéket változókban tároltuk, még azokat az értékeket is, amelyeket állandóan meg akart tartani.
A nagybetűs írás segített abban, hogy láthassuk azokat az értékeket, amelyekben állandóak akarunk maradni.
var HOURS_IN_DAY = 24; var hoursRemaining = currentHour - HOURS_IN_DAY; var MY_NAME = 'Brandon'; MY_NAME = ... // oops don't want to do this.
Az ES6 bevezette a deklarációt, const
amely a legtisztább értelemben nem „állandó”.
Az ES6 hozzáadta a feltételeket const
és let
a különböző szándékú változók létrehozásának módjait.
Ezzel a két kifejezéssel azt gondolhatja, hogy mi:
- nem kell nagybetűket írni, mivel világosan láthatjuk, hogy mely változók maradnak változatlanok, vagy
- nagybetűket kellene tennünk, amivel kijelentjük
const
.
Definíció szerint const
létrehoz egy állandót, amely csak olvasható hivatkozás egy értékre. Ez nem azt jelenti, hogy az általa birtokolt érték megváltoztathatatlan. Csak azt mondja, hogy a változó azonosítója nem rendelhető újra.
Más szavakkal, egyes const
hivatkozások megváltozhatnak.
const firstPerson = { favoriteNumber: 10, }; const secondPerson = firstPerson; console.log(secondPerson.favoriteNumber); //10 firstPerson.favoriteNumber +=1; console.log(secondPerson.favoriteNumber); //11
A fenti példa azt mutatja, hogy a deklaráció const
nem biztosítja a változó megváltoztathatatlanságát.
const
csak megakadályozza, hogy megpróbáljuk átrendezni a változó nevét. Ez nem akadályozza meg az objektum tulajdonságának megváltozását. Ne feledje: az objektumok utólagos hivatkozások.
// "TypeError: Assignment to constant variable."secondPerson = 'something else'; const secondPerson = 'Me' secondPerson = 'something else';
Tehát a JavaScript használatához túl kell lépnünk pusztán egy const
nyilatkozat keresésén . Két kérdést kell feltennünk annak megállapításához, hogy egy változó állandó-e:
- A változó értéke primitív?
- Szándékunkban áll a változó nevét ugyanazon az értéken tartani a programunk során?
Ha a válasz mindkettőre igen, akkor deklarálnunk kell a változót const
a névvel , és nagybetűvel írhatjuk a nevet.
Figyelem, mondtam, hogy „lehet”. Ennek a konvenciónak a szelleme különböző nyelvekből származik, amelyeknek voltak állandó állandói. A JavaScript nem. Legalábbis a legtisztább értelemben. Lehet, hogy ezért látja ezt a konvenciót ritkábban, mint amire számíthat. Az Airbnb-nek nagy része van a stíluskalauzban, itt olvasható.
A legfontosabb elvitel , hogy felismerjük a konstans definiálását a JavaScript-ben, tartalmaznia kell a programozó szándékát.
Ráadásul nem minden nyelv egyezményének van értelme egy másik nyelven. Végül csak elképzelni tudom, hogy sok konvenciót használtak jóval azelőtt, hogy az IDE-k rendelkeztek volna a mai képességekkel. Meggyőződésem, hogy IDE-m örömmel mondja el, hogy tévedek. Sokat történik.
Köszönöm, hogy elolvasta!
woz
Kövess a Twitteren.
Megjegyzések
- Kíváncsi lehet, miért nem használtam
PI
egyik példában sem. A rövidítések - különösen a kétbetűs rövidítések - hajlamosak vagy mindig nagybetűket írni, vagy egyezmények szerint mindig kisbetűket írnak elő.