JavaScript konst


Obsah

    Zobrazit obsah


ECMAScript 2015 (ES6)

V roce 2015 JavaScript zavedl důležité nové klíčové slovo: const.

Stalo se běžnou praxí deklarovat pole pomocí const:

Příklad

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

Zkuste to sami →

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

Nelze znovu přiřadit

Pole deklarované pomocí const nelze znovu přiřadit:

Příklad

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

Zkuste to sami →

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

Pole nejsou konstanty

Klíčové slovo const je trochu zavádějící.

Nedefinuje konstantní pole. Definuje konstantní odkaz na pole.

Z tohoto důvodu můžeme stále měnit prvky konstantního pole.


Prvky lze znovu přiřadit

Prvky konstantního pole můžete změnit:

Příklad

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

Zkuste to sami →

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

Podpora prohlížeče

Klíčové slovo const není podporováno v aplikaci Internet Explorer 10 nebo starší.

Následující tabulka definuje první verze prohlížeče s plnou podporou klíčového slova const:

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

Přiřazeno při deklaraci

Proměnným const JavaScriptu musí být při deklaraci přiřazena hodnota: <p>Význam: Pole deklarované pomocí const musí být při deklaraci inicializováno.

Použití const bez inicializace pole je syntaxe chyba:

Příklad

Toto nebude fungovat:

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

Pole deklarované pomocí var lze inicializovat kdykoli.

Pole můžete dokonce použít, než bude deklarováno:

Příklad

Toto je v pořádku:

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

Zkuste to sami →

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

Konstantní rozsah bloku

Pole deklarované pomocí constRozsah bloku.

Pole deklarované v bloku není stejné jako pole deklarované mimo blok:

Příklad

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"

Zkuste to sami →

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

Pole deklarované pomocí var nemá rozsah bloku:

Příklad

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"

Zkuste to sami →

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

Více o Block Scope se dozvíte v kapitole: JavaScript Scope.



Opětovná deklarace polí

Opětovné deklarování pole deklarovaného pomocí var je povoleno kdekoli v programu:

Příklad

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

Opětovné deklarování nebo opětovné přiřazení pole k const, ve stejném rozsahu nebo v stejný blok, není povoleno:

Příklad

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

Opětovné deklarování nebo opětovné přiřazení existujícího pole const ve stejném rozsahu nebo v stejný blok, není povoleno:

Příklad

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
}

Opětovná deklarace pole pomocí const v jiném rozsahu nebo v jiném bloku je povolena:

Příklad

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

Kompletní reference pole

Úplnou referenci Array naleznete na naší stránce:

Kompletní reference JavaScript Array.

Odkaz obsahuje popisy a příklady všech Array vlastnosti a metody.