JavaScript Const

ECMAScript 2015

ES2015 introducerade två viktiga nya nyckelord i JavaScript:let och const.

Genom const Definierade variabler är let Variabler liknar, men kan inte återfördelas:

Exempel

const PI = 3.141592653589793;
PI = 3.14;      // Det kommer att bli fel
PI = PI + 10;   // Det kommer att bli fel

Prova själv

blockområde

iblockområdeinuti använda const Deklarerade variabler är let Variabler liknar varandra.

I detta exempel är x deklarerad i blocket, annorlunda än x utanför blocket:

Exempel

var x = 10;
// Här är x 10
{ 
  const x = 6;
  // Här är x 6
}
// Här är x 10

Prova själv

Du kan se i föregående kapitel JavaScript Let Jag lärde mig mer om blockområde i mellanstadiet.

vid deklarerande

JavaScript const Variabler måste tilldelas ett värde vid deklarerande:

Fel

const PI;
PI = 3.14159265359;

Rätt

const PI = 3.14159265359;

Inte en sann konstant

Nyckelord const Det är vissa missvisande.

Det definierar inte en konstant värde. Det definierar en konstant referens till värdet.

Därför kan vi inte ändra den konstanta ursprungliga värdet, men vi kan ändra egenskaperna på konstanta objektet.

Ursprungliga värde

Om vi tilldelar en ursprunglig värde till en konstant, kan vi inte ändra ursprungliga värdet:

Exempel

const PI = 3.141592653589793;
PI = 3.14;      // Det kommer att bli fel
PI = PI + 10;   // Det kommer att bli fel

Prova själv

Konstanta objekt kan ändras

Du kan ändra egenskaperna på en konstant objekt:

Exempel

// Du kan skapa const-objekt:
const car = {type:"porsche", model:"911", color:"Black"};
// Du kan ändra egenskaper:
car.color = "White";
// 您可以添加属性:
car.owner = "Bill";

Prova själv

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

Exempel

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

Prova själv

常量数组可以更改

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

Exempel

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

Prova själv

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

Exempel

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

Prova själv

浏览器支持

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 变量:

Exempel

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

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

Exempel

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

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

Exempel

const x = 2;       // Tillåtet
const x = 3;       // 不允许
x = 3;             // 不允许
var x = 3;         // 不允许
let x = 3;         // 不允许
{
  const x = 2;   // Tillåtet
  const x = 3;   // Inte tillåtet
  x = 3;         // Inte tillåtet
  var x = 3;     // Inte tillåtet
  let x = 3;     // Inte tillåtet
}

återdeklareras i en annan scop eller block const är tillåtet:

Exempel

const x = 2;       // Tillåtet
{
  const x = 3;   // Tillåtet
}
{
  const x = 4;   // Tillåtet
}

Lyft

Genom var Definierade variabler kommer attLyftupp till toppen. Om du inte förstår vad lyft (Hoisting) är, lär dig om detta kapitel.

Du får använda var variabel innan den deklarerats:

Exempel

carName = "Volvo";    // Du får använda carName här
var carName;

Prova själv

Genom const Definierade variabler lyfts inte upp till toppen.

const Variabler får inte användas innan de deklarerats:

Exempel

carName = "Volvo";    // Du får inte använda carName här
const carName = "Volvo";