Var versus Javascript verlaten

| | |

Er zijn nieuwe functies toegevoegd aan de JavaScript-taal met de release van ECMAScript6 (ES6). Een van deze kenmerken is van invloed op de manier waarop we variabelen declareren. Met de toevoeging van let en const waren er allerlei vragen over wanneer je elk van de variabele declaraties moest gebruiken.

In deze artikel hebben we het over elk van de opties, met betrekking tot hun definitie en gebruik in de JavaScript-omgeving.

Pre-ES6: Var

Vóór de release van ES6, het sleutelwoord dat werd gebruikt voor variabelen was declaratie van var .

Variabelen kunnen ook opnieuw worden gedeclareerd en bijgewerkt zonder fouten

Het eerste probleem met var is duidelijk: herdeclaraties kunnen fouten in je code veroorzaken als een variabele al dezelfde naam heeft gekregen. Er kunnen onbedoelde gevolgen zijn als iets opnieuw wordt gedeclareerd en u zich niet realiseerde dat de variabelenaam al in de codebase is gebruikt. Daarnaast doen zich ook andere eigenaardigheden voor met betrekking tot de scope en tillen.

Scope

De scope vertelt ons wat variabelen zijn beschikbaar voor ons om te gebruiken - we hebben variabelen die globaal of lokaal kunnen zijn. Wat als we dezelfde variabeledeclaratie hebben, maar globaal is en de andere is lokaal?

Als onze var buiten de functie wordt gedeclareerd, is deze wereldwijd voor ons beschikbaar. Wanneer "hallo" is gedeclareerd in de functie, is het alleen beschikbaar voor de functie - met functionele of lokale scope

Als we een variabele declaratie hebben die hetzelfde is, maar het bereik is anders, verandert de var in de functie de toewijzing van de globale var niet, zelfs niet met het aanroepen van helloWorld () . Aangezien de var in de functie wordt gedeclareerd met de naam "hallo", lijkt het niet binnen het globale bereik van de alternatieve definitie te vallen.

Hoist

Wanneer een variabele in JavaScript wordt gehesen, wordt de declaratie van functies en variabelen verplaatst naar het begin van hun bereik voordat de code wordt uitgevoerd. De variabele is gedeclareerd maar niet geïnitialiseerd, dus de initiële waarde van de variabele is niet gedefinieerd.

Hier wordt "hallo" gehesen en verklaard op de top van je bereik. Dus eigenlijk interpreteert de computer de code als volgt:

De JavaScript-engine ziet dat hallo bestaat, maar weet niet hoe hallo wordt gedefinieerd tot de volgende stap.

Uiteindelijk de ontwikkelaars die hebben geholpen bij het maken van de ECMAScript-standaard realiseerde zich dat er enkele kleine problemen waren met var die hen tijd en geld konden kosten. Dus besloten ze om strengere zoekwoorden te maken. Dit leidde tot de creatie van "verlof" en "kosten" in ES6

ES6:. Let

Het let zoekwoord lijkt in veel opzichten erg op het var zoekwoord. De belangrijkste verschillen zijn de manier waarop fouten worden geretourneerd en de reikwijdte van elk zoekwoord is gedefinieerd.

Variabelen gedeclareerd en geïnitialiseerd met het trefwoord let kunnen opnieuw worden toegewezen, maar ze kunnen niet opnieuw worden aangegeven

Wanneer u de bovenstaande code uitvoert in een JavaScript-console, retourneert de laatste regel een fout:

SyntaxError: The identifier ` hallo` is al gedeclareerd

In tegenstelling tot var, zal het declareren van variabelen met let geen declaratie naar hetzelfde toestaan. Variabele naam. U kunt desgewenst echter opnieuw toewijzen, zoals in het bovenstaande voorbeeld.

Scope

Champ-wise, let lijkt erg op var. Naast de regels die de globale of lokale scope ons geeft, is er een extra beperking met let. Variabelen gedeclareerd in een codeblok zijn alleen beschikbaar voor dat codeblok. Dit is vergelijkbaar met het functionele bereik, omdat functies codeblokken zijn die nog verder kunnen worden uitgevoerd door afzonderlijke blokken binnen die functie te hebben.

Er zijn geen fouten in deze code omdat de twee instanties van hallo worden behandeld als afzonderlijke variabelen omdat ze verschillende reikwijdten hebben.

Hijsen

Hijsen is een ander gebied waar de declaraties let en var vergelijkbaar zijn. "Var", wanneer verhoogd, wordt geïnitialiseerd als ongedefinieerd. "leave" genereert echter een referentiefout als u het probeert te gebruiken voordat het is geïnitialiseerd.

Merk op dat het let trefwoord de beste keuze is in termen van syntaxis. Dit komt omdat er fouten worden gegenereerd wanneer u kunt proberen een variabele opnieuw te declareren of deze te gebruiken vóór het initialisatieproces.

ES6: Const

Het sleutelwoord const heeft strengere richtlijnen dan het let trefwoord . Met const kunnen variabelen niet gedeclareerd of opnieuw toegewezen worden. Er wordt een TypeError gegenereerd als u probeert opnieuw toe te wijzen aan een const.

Dat gezegd hebbende, kunnen bij het werken met objecten of arrays de eigenschappen van het object of array worden bijgewerkt. Zolang de basisstructuur van het object of de tabel niet verandert, kunt u deze altijd bijwerken.

Zoals het voorbeeld laat zien, resulteert het opnieuw toewijzen van de taak aan een nieuwe set eigenschappen in een TypeError: Assignment to constant variable. error. Const kan niet opnieuw worden toegewezen of opnieuw worden gedeclareerd, behalve in gevallen waarin u de unieke eigenschap in een object bijwerkt

Scope en lift

Net als het let trefwoord, is const een scope-blok en wordt het niet geïnitialiseerd, niet wanneer het wordt gehesen , dus het zal een foutmelding geven als je het probeert te gebruiken voor initialisatie.

Het const sleutelwoord is ideaal om te gebruiken totdat je `t " niet het gebruik meer Dit is wanneer u uw variabele moet overdragen of bijwerken

Conclusie

In dit artikel hebben we gekeken naar de verschillen tussen let, var en kosten . Van alle zoekwoorden die we momenteel hebben, is het het beste om var niet te gebruiken tenzij dat nodig is. Gebruik in plaats daarvan let of const.

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method