Var Vs Let Javascript

| | |

Nuove funzionalità sono state aggiunte al linguaggio JavaScript con il rilascio di ECMAScript6 (ES6). Una di queste caratteristiche influenza il modo in cui dichiariamo le variabili. Con l’aggiunta di let e const, sono arrivate ogni sorta di domande su quando utilizzare ciascuna delle dichiarazioni di variabile.

In questo post, parliamo di ciascuna delle opzioni, rispetto alla loro definizione e utilizzo nell’ambiente JavaScript.

Pre-ES6: Var

Prima del rilascio di ES6, il la parola chiave utilizzata per dichiarare le variabili era var.

Le variabili possono anche essere ridichiarate e aggiornate senza errori.

Il primo problema con var è evidente: le ridichiarazioni possono causare bug nel codice se una variabile è già stata assegnata allo stesso nome. Possono esserci conseguenze indesiderate se qualcosa viene dichiarato nuovamente e non ti sei reso conto che il nome della variabile era già stato utilizzato in precedenza nel codebase. Insieme a questo, arrivano anche altre idiosincrasie quando si tratta di scope e sollevamento.

Scope

Scope ci dice quali variabili sono disponibili per noi da usare ‚Äì abbiamo variabili che possono essere globalmente o localmente scope. Cosa succede se abbiamo la stessa dichiarazione di variabile, ma una è globale e l’altra è locale?

Quando la nostra var viene dichiarata al di fuori della funzione, è globalmente disponibile per noi con ambito globale. Quando "ciao"è dichiarato all’interno della funzione, è disponibile solo per la funzione ‚Äì con ambito funzionale o locale.

Quando abbiamo una dichiarazione di variabile che è la stessa, ma l’ambito è diverso, la var all’interno della funzione non cambia l’assegnazione della var globale, anche con l’invocazione del < funzione code>helloWorld(). Poiché la var è dichiarata all’interno della funzione con il nome "hello", non guarda all’ambito globale per l’altra definizione.

Hoisting

Quando una variabile viene issata in JavaScript, la dichiarazione di funzioni e variabili viene spostata all’inizio del loro ambito prima dell’esecuzione del codice. La variabile è dichiarata ma non inizializzata, quindi il valore iniziale della variabile non è definito.

Ecco, "ciao" è issato e dichiarato nella parte superiore del tuo ambito. Quindi, in sostanza, il computer interpreta il codice in questo modo:

Il motore JavaScript vede che hello esiste ma non sa come viene definito hello fino a quando passaggio successivo.

Alla fine, gli sviluppatori che hanno contribuito a creare lo standard ECMAScript si sono resi conto che c’erano alcuni piccoli problemi con var che potevano costare tempo e denaro. Hanno quindi deciso di creare parole chiave più rigorose. Ciò ha portato alla creazione di "let" e "cost" in ES6.

ES6: Let

La parola chiave letè molto simile alla parola chiave var in molti modi. Le differenze principali risiedono nel modo in cui vengono restituiti gli errori e nel modo in cui viene definita l’ambito di ciascuna parola chiave.

Le variabili dichiarate e inizializzate con la parola chiave let possono essere riassegnate, ma non possono essere ridichiarate.

Quando esegui il codice sopra in una console JavaScript, l’ultima riga genererà un errore:

SyntaxError: L’identificatore ’ciao’ è già stato dichiarato

A differenza di var, dichiarare le variabili usando let non consentirà una dichiarazione allo stesso nuovamente il nome della variabile. Puoi, tuttavia, riassegnarlo se lo desideri, come mostrato nell’esempio sopra.

Ambito

Per quanto riguarda l’ambito, let è molto simile a var. Oltre alle regole, l’ambito globale o locale ci offre, c’è un vincolo aggiuntivo con let. Le variabili dichiarate all’interno di un blocco di codice sono disponibili solo per quel blocco di codice. Questo è simile all’ambito funzionale perché le funzioni sono blocchi di codice che possono essere portati anche oltre avendo blocchi separati all’interno di quella funzione.

Non ci sono errori in questo codice poiché entrambi le istanze di hello sono trattate come variabili separate poiché hanno ambiti diversi.

Hoisting

Hoisting è un’altra area in cui le dichiarazioni let e var sono simili. "var", quando viene sollevato in alto, viene inizializzato come indefinito. Tuttavia, "lasciare" genera un errore di riferimento se si tenta di utilizzarlo prima che venga inizializzato.

Sappi che la parola chiave let è la scelta migliore in termini di sintassi. Questo perché vengono generati errori dove potresti provare a ridichiarare una variabile o usarla prima del processo di inizializzazione.

ES6: Const

La parola chiave const ha linee guida ancora più rigide della parola chiave let. Con const, le variabili non possono essere dichiarate o riassegnate. Viene generato un TypeError se si tenta di riassegnare a un const.

Detto questo, quando si lavora con oggetti o array, le proprietà dell’oggetto o dell’array possono essere aggiornate. Finché la struttura di base dell’oggetto o dell’array non cambia, puoi sempre aggiornarla.

Come mostrato nell’esempio, la riassegnazione dell’attività a un nuovo insieme di proprietà risulta in un TypeError: Assignment to variabile costante. errore. I const non possono essere riassegnati o ridichiarati tranne nei casi in cui aggiorni la singola proprietà in un oggetto.

Ambito e sollevamento

Proprio come la parola chiave let, constè block- scoped e non viene inizializzato quando issato, quindi genererà un errore se si tenta di utilizzarlo prima dell’inizializzazione.

La parola chiave const è ottima da usare finché non si può&rsquo ;non usarlo più. Questo è quando devi riassegnare o aggiornare la tua variabile.

Conclusione

In questo articolo abbiamo esaminato le differenze tra let, var e cost. Tra tutte le parole chiave a nostra disposizione ora, è preferibile non utilizzare var a meno che non sia necessario. Usa invece let o 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