JavaScript-konst


Innehållsförteckning

    Visa innehållsförteckning


ECMAScript 2015 (ES6)

Under 2015 introducerade JavaScript ett viktigt nytt nyckelord: const.

Det har blivit vanligt att deklarera arrayer med const:

Exempel

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

Prova själv →

<!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 inte omtilldelas

En array deklarerad med const kan inte tilldelas om:

Exempel

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

Prova själv →

<!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>

Arrayer är inte konstanter

Nyckelordet const är lite missvisande.

Den definierar INTE en konstant array. Den definierar en konstant referens till en array.

På grund av detta kan vi fortfarande ändra elementen i en konstant array.


Element kan tilldelas om

Du kan ändra elementen i en konstant array:

Exempel

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

Prova själv →

<!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>

Webbläsarstöd

Nyckelordet const stöds inte i Internet Explorer 10 eller tidigare.

Följande tabell definierar de första webbläsarversionerna med fullt stöd för nyckelordet const:

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

Tilldelas när deklarerats

JavaScript const-variabler måste tilldelas ett värde när de deklareras: <p>Betydning: En array som deklareras med const måste initieras när den deklareras.

Att använda const utan att initiera arrayen är en syntax fel:

Exempel

Detta kommer inte att fungera:

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

Arrayer deklarerade med var kan initieras när som helst.

Du kan till och med använda arrayen innan den deklareras:

Exempel

Det här är ok:

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

Prova själv →

<!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 Block Scope

En array deklarerad med const har Block Scope.

En array som deklareras i ett block är inte samma sak som en array som deklareras utanför blocket:

Exempel

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"

Prova själv →

<!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>

En array deklarerad med var har inte blockomfattning:

Exempel

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"

Prova själv →

<!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ära dig mer om Block Scope i kapitlet: JavaScript Scope.



Redeclaring Arrays

Omdeklaration av en array som deklarerats med var är tillåten var som helst i ett program:

Exempel

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

Omdeklarera eller omtilldela en array till const, i samma omfattning eller i samma block, är inte tillåtet:

Exempel

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

Omdeklarera eller omtilldela en befintlig const-matris, i samma omfattning eller i samma block, är inte tillåtet:

Exempel

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
}

Att omdeklarera en array med const, i ett annat omfång eller i ett annat block, är tillåtet:

Exempel

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

Komplett arrayreferens

För en komplett Array-referens, gå till vår:

Komplett JavaScript Array Reference.

Referensen innehåller beskrivningar och exempel på alla Array egenskaper och metoder.