JavaScript-Const

ECMAScript 2015

ES2015 tuotti kaksi tärkeää JavaScript-uusintaa:let ja const.

Kautta const määritelty let Määritellyt muuttujat ovat

Esimerkki

const PI = 3.141592653589793;
PI = 3.14;      // Tämä aiheuttaa virheen
PI = PI + 10;   // Tämä aiheuttaa virheen

Kokeile itse

lohko-aloitustilassa

lohdossalohko-aloitustilassasisällä käytettävissä const Määritellyt muuttujat ovat let Muuttujat ovat samanlaisia.

Tässä esimerkissä x on määritelty lohkossa, eri tavalla kuin lohkon ulkopuolella määritelty x:

Esimerkki

var x = 10;
// Tässä x on 10
{ 
  const x = 6;
  // Tässä x on 6
}
// Tässä x on 10

Kokeile itse

Edellisessä luvussa JavaScript-Let Lisätietoja lohko-aloitustilasta.

Määrittäessä

JavaScript const Muuttujan on annettava arvo määrittäessään:

Väärin

const PI;
PI = 3.14159265359;

Oikein

const PI = 3.14159265359;

Ei todellinen muuttuja

Avainsana const Se on hieman harhaanjohtava.

Se ei määrittele muuttujan arvoa. Se määrittelee arvon muuttujan.

Siksi emme voi muuttaa muuttujan alkuperäistä arvoa, mutta voimme muuttaa muuttujan ominaisuuksia.

Alkuperäinen arvo

Jos asetamme alkuperäisen arvon muuttujaan, emme voi muuttaa alkuperäistä arvoa:

Esimerkki

const PI = 3.141592653589793;
PI = 3.14;      // Tämä aiheuttaa virheen
PI = PI + 10;   // Tämä aiheuttaa virheen

Kokeile itse

Muuttujan arvo voi muuttua

Voit muuttaa muuttujan arvon ominaisuuksia:

Esimerkki

// Voit luoda const-objektin:
const car = {type:"porsche", model:"911", color:"Black"};
// Voit muuttaa ominaisuuksia:
car.color = "White";
// 您可以添加属性:
car.owner = "Bill";

Kokeile itse

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

Esimerkki

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

Kokeile itse

常量数组可以更改

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

Esimerkki

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

Kokeile itse

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

Esimerkki

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

Kokeile itse

浏览器支持

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

Esimerkki

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

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

Esimerkki

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

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

Esimerkki

const x = 2;       // Sallittu
const x = 3;       // 不允许
x = 3;             // 不允许
var x = 3;         // 不允许
let x = 3;         // 不允许
{
  const x = 2;   // Sallittu
  const x = 3;   // Ei sallittu
  x = 3;         // Ei sallittu
  var x = 3;     // Ei sallittu
  let x = 3;     // Ei sallittu
}

Toisessa toimialueessa tai lohkossa uudelleenmäärittää const On sallittu:

Esimerkki

const x = 2;       // Sallittu
{
  const x = 3;   // Sallittu
}
{
  const x = 4;   // Sallittu
}

Nouseminen ylös

Kautta var Määritellyt muuttujatNouseminen ylösylös. Jos et tunne, mitä nouseminen ylös (Hoisting) on, lue tämä luku.

Voit käyttää var-muuttujaa ennen sen määrittämistä:

Esimerkki

carName = "Volvo";    // Käyttöä carName:sta on sallittu tässä kohdassa
var carName;

Kokeile itse

Kautta const Määritellyt muuttujat eivät nouse ylös.

const Muuttujaa ei voi käyttää ennen sen määrittämistä:

Esimerkki

carName = "Volvo";    // Käyttöä carName:sta ei ole sallittu tässä kohdassa
const carName = "Volvo";