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