JavaScript Const

Kursusanbefaling:

ECMAScript 2015let ES2015 indførte to vigtige nye JavaScript-nøgleord: constog

Gennem constlet Definerede variabler er

Eksempel

const PI = 3.141592653589793;
PI = 3.14;      // Det vil fejle
PI = PI + 10;   // Det vil også fejle

Prøv det selv

i

Variabler ligner, men kan ikke ændres igen:iblokkskala const brugt let Deklarerede variabler er

Variabler ligner.

Eksempel

I dette eksempel er x deklareres i blokken, forskellig fra x uden for blokken:
// Her er x 6
{ 
  var x = 10;
  const x = 6;
}
// Her er x 6

Prøv det selv

// Her er x 10 JavaScript Let Lær mere om blokkskala i kapitel 6.

ved deres deklaration

JavaScript const Variabler skal tildelinges værdi ved deres deklaration:

Forkert

const PI;
PI = 3.14159265359;

Korrekt

const PI = 3.14159265359;

Ikke en rigtig konstant

Nøgleord const Det er lidt misvisende.

Det har ikke defineret en konstant værdi. Det definerer en konstant reference til værdien.

Derfor kan vi ikke ændre den oprindelige værdi af en konstant, men vi kan ændre egenskaberne på en konstant objekt.

Oprindelig værdi

Hvis vi tildeler en oprindelig værdi til en konstant, kan vi ikke ændre oprindeligt værdi:

Eksempel

const PI = 3.141592653589793;
PI = 3.14;      // Det vil fejle
PI = PI + 10;   // Det vil også fejle

Prøv det selv

En konstant objekt kan ændres

Du kan ændre egenskaberne på en konstant objekt:

Eksempel

// Du kan oprette const-objekter:
const car = {type:"porsche", model:"911", color:"Sort"};
// Du kan ændre egenskaber:
car.color = "Hvid";
// Du kan tilføje egenskaber:
car.ejer = "Bill";

Prøv det selv

Men du kan ikke tildele en værdi til en konstant objekt igen:

Eksempel

const car = {type:"porsche", model:"911", color:"Sort"};
car = {type:"Volvo", model:"XC60", color:"Hvid"};    // FEJL

Prøv det selv

Konstant array kan ændres

Du kan ændre elementerne i en konstant array:

Eksempel

// Du kan oprette en konstant array:
const cars = ["Audi", "BMW", "porsche"];
// Du kan ændre elementer:
cars[0] = "Honda";
// Du kan tilføje elementer:
cars.push("Volvo");

Prøv det selv

Men du kan ikke tildele en værdi til en konstant array igen:

Eksempel

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

Prøv det selv

Browserunderstøttelse

Internet Explorer 10 eller tidligere versioner understøtter ikke const Nøgleord.

Følgende tabel definerer den første browserversion, der fuldt ud understøtter const-nøglen:

Chrome 49 IE / Edge 11 Firefox 36 Safari 10 Opera 36
2016 år 3 måned 2013 år 10 måned 2015 år 2 måned 2016 år 9 måned 2016 år 3 måned

Omdeklarere

Det er tilladt at omdeklarere JavaScript i ethvert sted i programmet var Variabel:

Eksempel

var x = 2;    // Tilladt
var x = 3;    // Tilladt
x = 4;        // Tilladt

Det er ikke tilladt at omdeklarere eller tildele værdi til en eksisterende variabel i samme område eller blok: var eller let Omdeklarere eller tildele værdi til const:

Eksempel

var x = 2;         // Tilladt
const x = 2;       // Ikke tilladt
{
  let x = 2;     // Tilladt
  const x = 2;   // Ikke tilladt
}

Det er ikke tilladt at omdeklarere eller tildele værdi til en eksisterende const variabel i samme område eller blok:

Eksempel

const x = 2;       // Tilladt
const x = 3;       // Ikke tilladt
x = 3;             // Ikke tilladt
var x = 3;         // Ikke tilladt
let x = 3;         // Ikke tilladt
{
  const x = 2;   // Tilladt
  const x = 3;   // Ikke tilladt
  x = 3;         // Ikke tilladt
  var x = 3;     // Ikke tilladt
  let x = 3;     // Ikke tilladt
}

omdøbes i en anden kontekst eller blok const Er tilladt:

Eksempel

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

Hævning

Gennem var Definerede variabler bliveHævningtil toppen. Hvis du ikke er bekendt med begrebet hævning (Hoisting), så læs kapitlet om hævning.

Du kan bruge var variabler, før de er deklarerede:

Eksempel

carName = "Volvo";    // Du kan bruge carName her
var carName;

Prøv det selv

Gennem const Definerede variabler bliver ikke hævet til toppen.

const Variabler kan ikke bruges før de er deklarerede:

Eksempel

carName = "Volvo";    // Du kan ikke bruge carName her
const carName = "Volvo";