Const di JavaScript

ECMAScript 2015

ECMAScript 2015 ha introdotto due nuove parole chiave JavaScript importanti:let e const.

attraverso const Le variabili definite sono let Le variabili definite sono simili, ma non possono essere riassegnate:

Esempio

const PI = 3.141592653589793;
PI = 3.14;      //会出错
PI = PI + 10;   //也会出错

Prova personalmente

di scoping block

indi scoping blockall'interno const La variabile dichiarata è let Le variabili sono simili.

In questo esempio, x è dichiarato nel blocco, diverso da x dichiarato al di fuori del blocco:

Esempio

var x = 10;
// In questo caso, x è 10
{ 
  const x = 6;
  // In questo caso, x è 6
}
// In questo caso, x è 10

Prova personalmente

Puoi vedere nel capitolo precedente Let di JavaScript Ho imparato di più sulla scoping block in mediazione.

Al momento della dichiarazione

JavaScript const Le variabili devono essere assegnate un valore al momento della dichiarazione:

Non corretto

const PI;
PI = 3.14159265359;

Corretto

const PI = 3.14159265359;

Non è una costante vera e propria

Parola chiave const Ha un certo inganno.

Non definisce il valore costante. Definisce una referenza costante al valore.

Quindi, non possiamo modificare il valore originale della costante, ma possiamo modificare le proprietà dell'oggetto costante.

Valore originale

Se assegniamo un valore originale a una costante, non possiamo modificare il valore originale:

Esempio

const PI = 3.141592653589793;
PI = 3.14;      //会出错
PI = PI + 10;   //也会出错

Prova personalmente

L'oggetto costante può essere modificato

Puoi modificare le proprietà dell'oggetto costante:

Esempio

// Puoi creare oggetti const:
const car = {type:"porsche", model:"911", color:"Black"};
// Puoi modificare le proprietà:
car.color = "White";
// 您可以添加属性:
car.owner = "Bill";

Prova personalmente

但是您无法重新为常量对象赋值:

Esempio

const car = {type:"porsche", model:"911", color:"Black"};
car = {type:"Volvo", model:"XC60", color:"White"};    // ERROR

Prova personalmente

常量数组可以更改

您可以更改常量数组的元素:

Esempio

// 您可以创建常量数组:
const cars = ["Audi", "BMW", "porsche"];
// 您可以更改元素:
cars[0] = "Honda";
// 您可以添加元素:
cars.push("Volvo");

Prova personalmente

但是您无法重新为常量数组赋值:

Esempio

const cars = ["Audi", "BMW", "porsche"];
cars = ["Honda", "Toyota", "Volvo"];    // ERROR

Prova personalmente

浏览器支持

Internet Explorer 10 或更早版本不支持 const 关键词。

下表定义了第一个完全支持 const 关键词的浏览器版本:

Chrome 49 IE / Edge 11 Firefox 36 Safari 10 Opera 36
2016 年 3 月 2013 年 10 月 2015 年 2 月 2016 年 9 月 2016 年 3 月

重新声明

在程序中的任何位置都允许重新声明 JavaScript var 变量:

Esempio

var x = 2;    // 允许
var x = 3;    // 允许
x = 4;        // 允许

在同一作用域或块中,不允许将已有的 varlet 变量重新声明或重新赋值给 const

Esempio

var x = 2;         // 允许
const x = 2;       // 不允许
{
  let x = 2;     // 允许
  const x = 2;   // 不允许
}

在同一作用域或块中,为已有的 const 变量重新声明声明或赋值是不允许的:

Esempio

const x = 2;       // È permesso
const x = 3;       // 不允许
x = 3;             // 不允许
var x = 3;         // 不允许
let x = 3;         // 不允许
{
  const x = 2;   // È permesso
  const x = 3;   // Non è permesso
  x = 3;         // Non è permesso
  var x = 3;     // Non è permesso
  let x = 3;     // Non è permesso
}

Rideclamare in un altro contesto o blocco const È permesso:

Esempio

const x = 2;       // È permesso
{
  const x = 3;   // È permesso
}
{
  const x = 4;   // È permesso
}

Sollevamento

attraverso var Le variabili definite vengonoSollevamentoall'inizio. Se non si conosce cosa sia il sollevamento (Hoisting), si prega di studiare questa sezione.

È possibile utilizzare una variabile var prima della sua dichiarazione:

Esempio

carName = "Volvo";    // È possibile utilizzare carName in questo punto
var carName;

Prova personalmente

attraverso const Le variabili definite non vengono sollevate all'inizio.

const Le variabili non possono essere utilizzate prima della loro dichiarazione:

Esempio

carName = "Volvo";    // Non è possibile utilizzare carName in questo punto
const carName = "Volvo";