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
:
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>
Et array erklæret med const
kan ikke gentildeles:
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>
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.
Du kan ændre elementerne i en konstant matrix:
// 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>
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 |
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:
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:
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>
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:
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:
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 et array erklæret med var
er tilladt overalt i et program:
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:
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:
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:
const cars = ["Volvo", "BMW"]; // Allowed
{
const cars = ["Volvo", "BMW"]; // Allowed
}
{
const cars = ["Volvo", "BMW"]; // Allowed
}
For en komplet Array-reference, gå til vores:
Komplet JavaScript Array Reference.
Referencen indeholder beskrivelser og eksempler på alle Array egenskaber og metoder.