JavaScript -variabler - Hva er forskjellen mellom var, let og const i JavaScript?

JavaScript -variabler - Hva er forskjellen mellom var, let og const i JavaScript?
I ECMASCRIPT 2016 introduserte JavaScript to nye metoder for å erklære variabler med la og const nøkkelord. JavaScript hadde bare ett alternativ for å erklære variabler før 2016 i.e. de var nøkkelord. I denne artikkelen vil vi lære hvorfor det er tre forskjellige måter å erklære variabler i JavaScript; Vi vil også dekke forskjellen mellom disse tre artiklene. I tillegg vil denne artikkelen også introdusere deg for konsepter som variabelt omfang og heising. Så la oss komme i gang med å forstå hva som er variabelt omfang:

Hva er omfang i JavaScript

I JavaScript er omfanget definert av krøllete parenteser. Den definerer en kodeblokk som må utføres sammen. JavaScript har to typer omfang:

  • Funksjonscope
  • Blokkering

Funksjon-scope: Enhver variabel i JavaScript opprettet i en funksjon ved hjelp av var er funksjonshopet. Synligheten er begrenset til definisjonen av funksjonen, og den kan ikke nås hvor som helst utenfor funksjonen:

funksjon showMessage ()
var melding = 'Hei fra Linuxhint';
konsoll.logg ("i:" + melding); // 'Hei, Linuxhint!'

Vis melding();
konsoll.logg ("ut:" + melding); ReferenceError: Meldingen er ikke definert

Blokkering: En kodeblokk i JavaScript er definert av krøllete seler. Denne typen omfang vil hjelpe oss å skille mellom de tre metodene for å erklære variabler:

Følgende er et eksempel der vi har erklært variabler med VaR, Let og Const i en IF -blokkering og deretter logget dem til konsollen:

hvis sant)
var melding1 = 'Hei fra Linuxhint';
La melding2 = 'Hei fra Linuxhint';
const Message3 = 'Hei igjen fra Linuxhint';
konsoll.logg ("i:" + melding1); // 'Hei fra Linuxhint';
konsoll.Logg ("i:" + Message2); // 'Hei fra Linuxhint';
konsoll.Logg ("i:" + Message3); // 'Hei igjen fra Linuxhint';

Alle variablene er logget til konsollen uten noen feil da de ble logget fra samme blokk.

Imidlertid, hvis vi prøver å logge dem fra utenfor IF-blokken, vil den under-nevnte feilen vises:

hvis sant)
var melding1 = 'Hei fra Linuxhint';
La melding2 = 'Hei fra Linuxhint';
const Message3 = 'Hei igjen fra Linuxhint';
konsoll.logg ("i:" + melding1); // 'Hei fra Linuxhint';
konsoll.Logg ("i:" + Message2); // 'Hei fra Linuxhint';
konsoll.Logg ("i:" + Message3); // 'Hei igjen fra Linuxhint';

konsoll.Logg ("Out:" + Message1); // 'Hei fra Linuxhint';
konsoll.Logg ("Out:" + Message2); // ReferenceError: Message2 er ikke definert
konsoll.Logg ("Out:" + Message3); // ReferenceError: Message3 er ikke definert

Hvordan bruke VAR for å erklære en variabel i JavaScript

Før ECMASCRIPT 2016 var var den eneste metoden for å erklære en variabel i JavaScript, men den hadde flere problemer knyttet til den, så nye metoder ble introdusert som kunne brukes til å erklære variabler. Vi vil først forstå var Og så snakker vi om disse problemene:

Omfang av var: Variabelt omfang betyr i utgangspunktet hvor variabelen vil være tilgjengelig å bruke. Variabler som er erklært med var Nøkkelord har enten globalt eller lokalt omfang.

Variabler som er erklært utenfor funksjonsblokk ved bruk av var har globalt omfang. Globalt omfang betyr at en variabel er tilgjengelig å bruke hvor som helst i vinduet.

Når variabelen er deklarert i en funksjon, er den funksjonshopet, noe som betyr at den bare kan brukes inne i funksjonen:

For å forstå videre, se på eksemplet nedenfor:

funksjon showMessage ()
var melding = 'Hei fra Linuxhint';

Her, The beskjed er funksjon scoped slik at den ikke kan nås utenfor funksjonen. Så hvis vi gjør dette:

funksjon showMessage ()
var melding = 'Hei fra Linuxhint';

konsoll.logg ("ut:" + melding); // ReferenceError: Meldingen er ikke definert

Dette vil gi oss en feil som er fordi beskjed er ikke tilgjengelig utenfor funksjonen.

var utenfor en for-loop: Variabelen "Jeg" kan nås fra utsiden av for-loop.

for (var i = 0; i < 5; i++)
konsoll.logg ("i:" + i);

konsoll.logg ("ut:" + i);

VAR-variabler kan avklæres og oppdateres på nytt: I JavaScript -variabler erklært med var Nøkkelord kan innhuskes og oppdateres i samme omfang:

funksjon showMessage ()
var melding = 'Hei fra Linuxhint';
Melding = 'Hei fra Linuxhint';
var melding = 'Hei igjen fra Linuxhint';
konsoll.logg (melding); // 'Hei igjen fra Linuxhint';

Vis melding()

Slik bruker du Let to Delcord en variabel i JavaScript: De la Nøkkelord er nå foretrukket over var for variable erklæringer; Det kommer med noen få forbedringer over var.

La blokkere blokkert: I JavaScript er en kodeblokk innsamling av uttalelser som er avgrenset av et par krøllete parentes . En variabel erklært ved hjelp av la Nøkkelord er bare tilgjengelig for bruk i den blokken og kan ikke nås utenfra:

hvis sant)
La melding = 'Hei fra Linuxhint';
konsoll.logg ("i:" + melding); // "Hei fra Linuxhint"

konsoll.logg ("ut:" + melding); // ReferenceError

Hvis vi bruker beskjed Utenfor blokken der den ble definert, vil den returnere en feil. Dette er fordi la variabler er blokkerte.

La utenfor en for-loop: Følgende eksempel som demonstrerer la Variabel utgang ved hjelp av for loop:

for (la i = 0; i < 5; i++)
konsoll.logg ("i:" + i);

konsoll.logg ("ut:" + i);

La kan oppdateres, men ikke erklæres på nytt: En variabel erklært med la kan oppdateres innenfor dets omfang akkurat som var, Men i motsetning til var, Det kan ikke omdekkes:

La melding = 'Hei fra Linuxhint';
Melding = 'Hei fra Linuxhint';

Konsollen er helt tom og returnerer ingen feil. Disse uttalelsene vil gi en feil:

La melding = 'Hei fra Linuxhint';
La melding = 'Hei fra Linuxhint'; // SyntaxError: Identifier 'Message' er allerede erklært

Imidlertid omdefinerer du den samme variabelen i et annet omfang ved bruk av la gir ingen feil:

La melding = 'Hei fra Linuxhint';
hvis sant)
La melding = 'Hei fra Linuxhint';
konsoll.logg ("i:" + melding); // "Hei fra Linuxhint"

konsoll.logg ("ut:" + melding); // "Hei fra Linuxhint"

De la Nøkkelord behandler disse to variablene som forskjellige hvis de er i forskjellige omfang, slik at det ikke returnerer noen feil; Denne funksjonen i la nøkkelord gjør det til et bedre valg enn var. Når du bruker la, Du kan gjenbruke variabelnavn i forskjellige omfang uten å bekymre deg for om du har brukt det variable navnet før.

Hvordan bruke Const for å erklære variabelen i JavaScript

Variablene erklært ved hjelp av const Nøkkelord har konstante verdier. Dette betyr at verdiene deres ikke kan endres/tildeles. Ligner på variablene erklært med la nøkkelord, er variablene erklært med var Nøkkelord er også blokkert spop.

const kan ikke pådraksiseres eller omdisponeres: Variablene erklært med nøkkelordet const kan ikke omdekkes eller tildeles innenfor samme omfang. Så hvis vi har erklært en variabel med Const nøkkelord, kan vi ikke gjøre dette:

const melding = 'Hei fra Linuxhint';
Melding = 'Hei fra Linuxhint'; // typeerror

Vi vil heller ikke kunne gjøre dette:

const melding = 'Hei fra Linuxhint';
const melding = 'Hei fra Linuxhint'; // Syntaksfeil

Hver variabel som er erklært ved hjelp av const Nøkkelord må initialiseres på tidspunktet for erklæringen.

Denne oppførselen til const Nøkkelord endres på en eller annen måte når det gjelder objekter. Mens objektet erklæres ikke kan oppdateres, kan dens egenskaper endres

Så hvis vi erklærer et objekt med const:

const user =
Navn: "Steve",
Alder: 13

Selv om dette ikke kan gjøres:

bruker =
Brukernavn: "Harry",
Karakter: "3."
// typeerror: Tildeling til konstant variabel.

Dette kan gjøres:

bruker.name = "Harry";

Dette vil endre verdien av bruker.Navn uten å returnere noen feil.

Endelig gjennomgang

Variabel erklæring Funksjonscope Blokkering Omdefinerbar
var
la
const

Konklusjon

Det er generelt en god praksis å unngå å bruke var Å erklære variabler i JavaScript fordi funksjonsomfanget er forvirrende og ikke er så åpenbart som blokkomfanget. De la og const Nøkkelord oppfordrer devs til å bruke bedre kodingspraksis. Du bør generelt bruke la for variablene du trenger å tilordne og bruke const nøkkelord for alle andre variabler. Denne artikkelen forklarer alle de tre variable typene med eksempler grundig.