JavaScript-konst


Indholdsfortegnelse

    Vis indholdsfortegnelse


ECMAScript 2015 (ES6)

I 2015 introducerede JavaScript et vigtigt nyt søgeord: const.

Det er blevet en almindelig praksis at erklære arrays ved hjælp af const:

Eksempel

const cars = ["Saab", "Volvo", "BMW"];

Prøv det selv →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript const</h2>
<p id="demo"></p>

<script>

const cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;

</script>
</body>
</html>

Kan ikke gentildeles

Et array erklæret med const kan ikke gentildeles:

Eksempel

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

Prøv det selv →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript const</h2>

<p>You can NOT reassign a constant array:</p>

<p id="demo"></p>

<script>
try {
  const cars = ["Saab", "Volvo", "BMW"];
  cars = ["Toyota", "Volvo", "Audi"];
}
catch (err) {
  document.getElementById("demo").innerHTML = err;
}
</script>

</body>
</html>

Arrays er ikke konstante

Søgeordet const er lidt misvisende.

Det definerer IKKE et konstant array. Den definerer en konstant reference til et array.

På grund af dette kan vi stadig ændre elementerne i et konstant array.


Elementer kan gentildeles

Du kan ændre elementerne i en konstant matrix:

Eksempel

// 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");

Prøv det selv →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript const</h2>

<p>Declaring a constant array does NOT make the elements unchangeable:</p>

<p id="demo"></p>

<script>
// Create an Array:
const cars = ["Saab", "Volvo", "BMW"];

// Change an element:
cars[0] = "Toyota";

// Add an element:
cars.push("Audi");

// Display the Array:
document.getElementById("demo").innerHTML = cars; 
</script>

</body>
</html>

Browser support

Søgeordet const understøttes ikke i Internet Explorer 10 eller tidligere.

Følgende tabel definerer de første browserversioner med fuld understøttelse af søgeordet const:

Chrome 49 IE 11 / Edge Firefox 36 Safari 10 Opera 36
Mar, 2016 Oct, 2013 Feb, 2015 Sep, 2016 Mar, 2016

Tildelt, når deklareres

JavaScript const-variabler skal tildeles en værdi, når de erklæres: <p>Betydning: Et array erklæret med const skal initialiseres, når det erklæres.

Brug af const uden at initialisere arrayet er en syntaks fejl:

Eksempel

Dette vil ikke virke:

const cars;
cars = ["Saab", "Volvo", "BMW"];

Arrays erklæret med var kan initialiseres til enhver tid.

Du kan endda bruge arrayet, før det er erklæret:

Eksempel

Det er i orden:

cars = ["Saab", "Volvo", "BMW"];
var cars;

Prøv det selv →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>JavaScript Hoisting</h2>

<p id="demo"></p>

<script>

cars = ["Saab", "Volvo", "BMW"];
var cars;

document.getElementById("demo").innerHTML = cars[0];

</script>
</body>
</html>

Const Blok Omfang

Et array erklæret med const har Block Scope.

Et array erklæret i en blok er ikke det samme som et array erklæret uden for blokken:

Eksempel

const cars = ["Saab", "Volvo", "BMW"];
// Here cars[0] is "Saab"
{
  const cars = ["Toyota", "Volvo", "BMW"];
 
  // Here cars[0] is "Toyota"
}
// Here cars[0] is "Saab"

Prøv det selv →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Declaring an Array Using const</h2>

<p id="demo"></p>

<script>
const cars = ["Saab", "Volvo", "BMW"];
// Here cars[0] is "Saab"
{  
  const cars = ["Toyota", "Volvo", "BMW"]; 
  // Here cars[0] is "Toyota"
}
// Here cars[0] is "Saab"
document.getElementById("demo").innerHTML = cars[0];
</script>

</body>
</html>

Et array erklæret med var har ikke blokomfang:

Eksempel

var cars = ["Saab", "Volvo", "BMW"];
// Here cars[0] is "Saab"
{
  var cars = ["Toyota", "Volvo", "BMW"];
 
  // Here cars[0] is "Toyota"
}
// Here cars[0] is "Toyota"

Prøv det selv →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1> 
<h2>Declaring an Array Using var</h2>

<p id="demo"></p>

<script>
var cars = ["Saab", "Volvo", "BMW"];
// Here cars[0] is "Saab"
{  
  var cars = ["Toyota", "Volvo", "BMW"]; 
  // Here cars[0] is "Toyota"
}
// Here cars[0] is "Toyota"
document.getElementById("demo").innerHTML = cars[0];
</script>

</body>
</html>

Du kan lære mere om Block Scope i kapitlet: JavaScript Scope.



Genangivelse af arrays

Genangivelse af et array erklæret med var er tilladt overalt i et program:

Eksempel

var cars = ["Volvo", "BMW"];   // Allowed
var cars = ["Toyota", "BMW"];  // Allowed
cars = ["Volvo", "Saab"];      // Allowed

Genangivelse eller omtildeling af et array til const, i samme omfang eller i den samme blok, er ikke tilladt:

Eksempel

var cars = ["Volvo", "BMW"];     // Allowed
const cars = ["Volvo", "BMW"];   // Not allowed
{
  var cars = ["Volvo", "BMW"];   // Allowed
  const cars = ["Volvo", "BMW"]; // Not allowed
}

Genangivelse eller gentildeling af et eksisterende const-array i samme omfang eller i den samme blok, er ikke tilladt:

Eksempel

const cars = ["Volvo", "BMW"];   // Allowed
const cars = ["Volvo", "BMW"];   // Not allowed
var cars = ["Volvo", "BMW"];     // Not allowed
cars = ["Volvo", "BMW"];         // Not allowed

{
  const cars = ["Volvo", "BMW"]; // Allowed
  const cars = ["Volvo", "BMW"]; // Not allowed
  var cars = ["Volvo", "BMW"];   // Not allowed
  cars = ["Volvo", "BMW"];       // Not allowed
}

Genangivelse af et array med const, i et andet omfang eller i en anden blok, er tilladt:

Eksempel

const cars = ["Volvo", "BMW"];   // Allowed
{
  const cars = ["Volvo", "BMW"]; // Allowed
}
{
  const cars = ["Volvo", "BMW"]; // Allowed
}

Komplet Array Reference

For en komplet Array-reference, gå til vores:

Komplet JavaScript Array Reference.

Referencen indeholder beskrivelser og eksempler på alle Array egenskaber og metoder.