JavaScript cost
La const
parola chiave è stata introdotta in
ES6 (2015) .
Le variabili definite con const
non possono essere dichiarate nuovamente.
Le variabili definite con const
non possono essere riassegnate.
Le variabili definite con const
hanno Block Scope.
Non può essere riassegnato
Una const
variabile non può essere riassegnata:
Esempio
const PI = 3.141592653589793;
PI = 3.14; // This will give an error
PI = PI + 10; // This will also give an error
Deve essere assegnato
Alle variabili JavaScript const
deve essere assegnato un valore quando vengono dichiarate:
Corretta
const PI = 3.14159265359;
Errato
const PI;
PI = 3.14159265359;
Quando usare JavaScript const?
Come regola generale, dichiara sempre una variabile con a const
meno che tu non sappia che il valore cambierà.
Usalo const
quando dichiari:
- Una nuova matrice
- Un nuovo oggetto
- Una nuova funzione
- Una nuova RegExp
Oggetti e array costanti
La parola chiave const
è un po' fuorviante.
Non definisce un valore costante. Definisce un riferimento costante a un valore.
Per questo motivo NON puoi:
- Riassegna un valore costante
- Riassegna una matrice costante
- Riassegna un oggetto costante
- Cambia gli elementi dell'array costante
- Modifica le proprietà dell'oggetto costante
Ma tu puoi:
Array costanti
È possibile modificare gli elementi di un array costante:
Esempio
// You can create a constant array:
const cars = ["Saab", "Volvo", "BMW"];
// You can change an element:
cars[0] = "Toyota";
// You can add an element:
cars.push("Audi");
Ma NON puoi riassegnare l'array:
Esempio
const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"]; // ERROR
Oggetti costanti
È possibile modificare le proprietà di un oggetto costante:
Esempio
// You can create a const object:
const car = {type:"Fiat", model:"500", color:"white"};
// You can change a property:
car.color = "red";
// You can add a property:
car.owner = "Johnson";
Ma NON puoi riassegnare l'oggetto:
Esempio
const car = {type:"Fiat", model:"500", color:"white"};
car = {type:"Volvo", model:"EX60", color:"red"}; //
ERROR
Supporto browser
La const
parola chiave non è supportata in Internet Explorer 10 o versioni precedenti.
La tabella seguente definisce le prime versioni del browser con pieno supporto per la const
parola chiave:
Chrome 49 | IE 11 / Edge | Firefox 36 | Safari 10 | Opera 36 |
Mar, 2016 | Oct, 2013 | Feb, 2015 | Sep, 2016 | Mar, 2016 |
Ambito di blocco
La dichiarazione di una variabile con const
è simile a let
quando si tratta di Block Scope .
La x dichiarata nel blocco, in questo esempio, non è la stessa x dichiarata all'esterno del blocco:
Esempio
const x = 10;
// Here x is 10
{
const x = 2;
// Here x is 2
}
// Here x is 10
Puoi saperne di più sull'ambito del blocco nel capitolo Ambito JavaScript .
Ridichiarare
Ridichiarare una var
variabile JavaScript è consentita ovunque in un programma:
Esempio
var x = 2; // Allowed
var x = 3; // Allowed
x = 4; // Allowed
Non è consentito dichiarare nuovamente una variabile var
o esistente in , nello stesso ambito:let
const
Esempio
var x = 2; // Allowed
const x = 2; // Not allowed
{
let x = 2; // Allowed
const x = 2; // Not allowed
}
{
const x = 2; // Allowed
const x = 2; // Not allowed
}
Non è consentito riassegnare una const
variabile esistente, nello stesso ambito:
Esempio
const x = 2; // Allowed
x = 2; // Not allowed
var x = 2; // Not allowed
let x = 2; // Not allowed
const x = 2; // Not allowed
{
const x = 2; // Allowed
x = 2;
// Not allowed
var x = 2;
// Not allowed
let x = 2;
// Not allowed
const x = 2; // Not allowed
}
È consentito ridichiarare una variabile con const
, in un altro ambito o in un altro blocco:
Esempio
const x = 2; // Allowed
{
const x = 3; // Allowed
}
{
const x = 4; // Allowed
}
Costante di sollevamento
Le variabili definite con var
vengono sollevate in alto e possono essere inizializzate in qualsiasi momento.
Significato: puoi usare la variabile prima che venga dichiarata:
Esempio
Questo va bene:
carName = "Volvo";
var carName;
Se vuoi saperne di più sul sollevamento, consulta il capitolo JavaScript Hoisting .
Anche le variabili definite con const
vengono sollevate in alto, ma non inizializzate.
Significato: l'utilizzo di una const
variabile prima che venga dichiarata risulterà in un
ReferenceError
:
Esempio
alert (carName);
const carName = "Volvo";