ES6 - Variabili
UN variable, per definizione, è "uno spazio con nome nella memoria" che memorizza i valori. In altre parole, funge da contenitore per i valori in un programma. Vengono chiamati i nomi delle variabiliidentifiers. Di seguito sono riportate le regole di denominazione per un identificatore:
Gli identificatori non possono essere parole chiave.
Gli identificatori possono contenere alfabeti e numeri.
Gli identificatori non possono contenere spazi e caratteri speciali, tranne il carattere di sottolineatura (_) e il segno del dollaro ($).
I nomi delle variabili non possono iniziare con un numero.
Digitare Sintassi
Una variabile deve essere dichiarata prima di essere utilizzata. La sintassi di ES5 utilizzava l'estensionevarparola chiave per ottenere lo stesso risultato. La sintassi ES5 per la dichiarazione di una variabile è la seguente.
//Declaration using var keyword
var variable_name
ES6 introduce la seguente sintassi di dichiarazione delle variabili:
- Usando il let.
- Utilizzando il const.
Variable initializationsi riferisce al processo di memorizzazione di un valore nella variabile. Una variabile può essere inizializzata al momento della sua dichiarazione o in un secondo momento.
La sintassi del tipo ES5 tradizionale per la dichiarazione e l'inizializzazione di una variabile è la seguente:
//Declaration using var keyword
var variable_name = value
Esempio: utilizzo di variabili
var name = "Tom"
console.log("The value in the variable is: "+name)
L'esempio precedente dichiara una variabile e ne stampa il valore.
Il seguente output viene visualizzato in caso di esecuzione riuscita.
The value in the variable is Tom
JavaScript e digitazione dinamica
JavaScript è un linguaggio non digitato. Ciò significa che una variabile JavaScript può contenere un valore di qualsiasi tipo di dati. A differenza di molti altri linguaggi, non è necessario dire a JavaScript durante la dichiarazione della variabile quale tipo di valore la variabile manterrà. Il tipo di valore di una variabile può cambiare durante l'esecuzione di un programma e JavaScript se ne occupa automaticamente. Questa funzione è definita comedynamic typing.
JavaScriptVariable Scope
L'ambito di una variabile è la regione del programma in cui è definita. Tradizionalmente, JavaScript definisce solo due ambiti: globale e locale.
Global Scope - È possibile accedere a una variabile con ambito globale da qualsiasi parte del codice JavaScript.
Local Scope - È possibile accedere a una variabile con ambito locale dall'interno di una funzione in cui è dichiarata.
Esempio: variabile globale e locale
L'esempio seguente dichiara due variabili in base al nome num - uno al di fuori della funzione (ambito globale) e l'altro all'interno della funzione (ambito locale).
var num = 10
function test() {
var num = 100
console.log("value of num in test() "+num)
}
console.log("value of num outside test() "+num)
test()
La variabile a cui ci si riferisce all'interno della funzione visualizza il valore della variabile con ambito locale. Tuttavia, la variabilenum quando si accede all'esterno della funzione restituisce l'istanza con ambito globale.
Il seguente output viene visualizzato in caso di esecuzione riuscita.
value of num outside test() 10
value of num in test() 100
ES6 definisce un nuovo ambito variabile: l'ambito del blocco.
L'ambito Let e Block
L'ambito del blocco limita l'accesso di una variabile al blocco in cui è dichiarata. Ilvarparola chiave assegna un ambito di funzione alla variabile. A differenza della parola chiave var, illet parola chiave consente allo script di limitare l'accesso alla variabile al blocco di inclusione più vicino.
"use strict"
function test() {
var num = 100
console.log("value of num in test() "+num) {
console.log("Inner Block begins")
let num = 200
console.log("value of num : "+num)
}
}
test()
Lo script dichiara una variabile numall'interno dell'ambito locale di una funzione e lo dichiara nuovamente all'interno di un blocco utilizzando la parola chiave let. Il valore della variabile con ambito locale viene stampato quando si accede alla variabile al di fuori del blocco interno, mentre la variabile con ambito di blocco viene indicata all'interno del blocco interno.
Note - La modalità rigorosa è un modo per attivare una variante limitata di JavaScript.
Il seguente output viene visualizzato in caso di esecuzione riuscita.
value of num in test() 100
Inner Block begins
value of num : 200
Esempio: let v / s var
var no = 10;
var no = 20;
console.log(no);
Il seguente output viene visualizzato in caso di corretta esecuzione del codice precedente.
20
Riscriviamo lo stesso codice usando il let parola chiave.
let no = 10;
let no = 20;
console.log(no);
Il codice precedente genererà un errore: l'identificatore "no" è già stato dichiarato. A qualsiasi variabile dichiarata utilizzando la parola chiave let viene assegnato l'ambito del blocco.
lasciare e bloccare la sicurezza a livello
Se proviamo a dichiarare un file letvariabile due volte all'interno dello stesso blocco, genererà un errore. Considera il seguente esempio:
<script>
let balance = 5000 // number type
console.log(typeof balance)
let balance = {message:"hello"} // changing number to object type
console.log(typeof balance)
</script>
Il codice sopra risulterà nel seguente errore:
Uncaught SyntaxError: Identifier 'balance' has already been declared
lasciare e più blocchi
Tuttavia, lo stesso let variabile può essere utilizzata in diversi ambiti a livello di blocco senza errori di sintassi.
Esempio
<script>
let count = 100
for (let count = 1;count <= 10;count++){
//inside for loop brackets ,count value starts from 1
console.log("count value inside loop is ",count);
}
//outside for loop brackets ,count value is 100
console.log("count value after loop is",count);
if(count == 100){
//inside if brackets ,count value is 50
let count = 50;
console.log("count inside if block",count);
}
console.log(count);
</script>
L'output del codice precedente sarà il seguente:
count value inside loop is 1
count value inside loop is 2
count value inside loop is 3
count value inside loop is 4
count value inside loop is 5
count value inside loop is 6
count value inside loop is 7
count value inside loop is 8
count value inside loop is 9
count value inside loop is 10
count value after loop is 100
count inside if block 50
100
Il const
Il constla dichiarazione crea un riferimento di sola lettura a un valore. Non significa che il valore che contiene sia immutabile, ma solo che l'identificatore della variabile non può essere riassegnato. Le costanti hanno un ambito di blocco, proprio come le variabili definite utilizzando l'istruzione let. Il valore di una costante non può cambiare tramite riassegnazione e non può essere nuovamente dichiarato.
Le seguenti regole sono valide per una variabile dichiarata utilizzando const parola chiave -
- Le costanti non possono essere riassegnate a un valore.
- Una costante non può essere dichiarata nuovamente.
- Una costante richiede un inizializzatore. Ciò significa che le costanti devono essere inizializzate durante la sua dichiarazione.
- Il valore assegnato a un file const variabile è mutabile.
Esempio
const x = 10
x = 12 // will result in an error!!
Il codice precedente restituirà un errore poiché non è possibile riassegnare un valore alle costanti. Le costanti variabili non sono modificabili.
Le costanti sono immutabili
A differenza delle variabili dichiarate utilizzando let parola chiave, constantssono immutabili. Ciò significa che il suo valore non può essere modificato. Ad esempio, se proviamo a modificare il valore della variabile costante, verrà visualizzato un errore.
<script>
let income = 100000
const INTEREST_RATE = 0.08
income += 50000 // mutable
console.log("changed income value is ",income)
INTEREST_RATE += 0.01
console.log("changed rate is ",INTEREST_RATE) //Error: not mutable
</script>
L'output del codice precedente sarà il seguente:
changed income value is 150000
Uncaught TypeError: Assignment to constant variable
const e array
L'esempio seguente mostra come creare un array non modificabile. È possibile aggiungere nuovi elementi all'array. Tuttavia, la reinizializzazione dell'array comporterà un errore come mostrato di seguito:
<script>
const DEPT_NOS = [10,20,30,50]
DEPT_NOS.push(40)
console.log('dept numbers is ',DEPT_NOS)
const EMP_IDS = [1001,1002,1003]
console.log('employee ids',EMP_IDS)
//re assigning variable employee ids
EMP_IDS = [2001,2002,2003]
console.log('employee ids after changing',EMP_IDS)
</script>
L'output del codice sopra sarà come mostrato di seguito -
dept numbers is (5) [10, 20, 30, 50, 40]
employee ids (3) [1001, 1002, 1003]
Uncaught TypeError: Assignment to constant variable.
La parola chiave var
Prima di ES6, il varla parola chiave è stata utilizzata per dichiarare una variabile in JavaScript. Variabili dichiarate utilizzandovarnon supportano l'ambito a livello di blocco. Ciò significa che se una variabile viene dichiarata in un ciclo oif block è possibile accedervi al di fuori del ciclo o del file if block. Questo perché le variabili dichiarate utilizzando ilvar sollevamento di sostegno di parole chiave.
var e sollevamento
Variable hoistingconsente l'uso di una variabile in un programma JavaScript, anche prima che venga dichiarata. Tali variabili verranno inizializzate aundefinedper impostazione predefinita. Il runtime JavaScript analizzerà le dichiarazioni di variabili e le inserirà all'inizio della funzione o dello script. Variabili dichiarate convarla parola chiave viene issata in cima. Considera il seguente esempio:
<script>
variable company is hoisted to top , var company = undefined
console.log(company); // using variable before declaring
var company = "TutorialsPoint"; // declare and initialized here
console.log(company);
</script>
L'output del codice sopra sarà come mostrato di seguito -
undefined
TutorialsPoint
var e block scope
Il block scopelimita l'accesso di una variabile al blocco in cui è dichiarata. Ilvarparola chiave assegna un ambito di funzione alla variabile. Variabili dichiarate utilizzando ilvarla parola chiave non ha un ambito di blocco. Considera il seguente esempio:
<script>
//hoisted to top ; var i = undefined
for (var i = 1;i <= 5;i++){
console.log(i);
}
console.log("after the loop i value is "+i);
</script>
L'output del codice precedente sarà il seguente:
1
2
3
4
5
after the loop i value is 6
La variabile i è dichiarato all'interno del ciclo for usando il varparola chiave. La variabile i è accessibile al di fuori del ciclo. Tuttavia, a volte, potrebbe essere necessario limitare l'accesso a una variabile all'interno di un blocco. Non possiamo usare ilvarparola chiave in questo scenario. ES6 introduce illet parola chiave per superare questa limitazione.
var e sicurezza a livello di blocco
Se dichiariamo lo stesso variable due volte utilizzando il var keywordall'interno di un blocco, il compilatore non genererà un errore. Tuttavia, ciò potrebbe causare errori logici imprevisti in fase di esecuzione.
<script>
var balance = 5000
console.log(typeof balance)
var balance = {message:"hello"}
console.log(typeof balance)
</script>
L'output del codice sopra è come mostrato di seguito:
number
object