V roce 2015 JavaScript zavedl důležité nové klíčové slovo: const
.
Stalo se běžnou praxí deklarovat pole pomocí const
:
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>
Pole deklarované pomocí const
nelze znovu přiřadit:
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>
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 konstantního pole můžete změnit:
// 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>
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 |
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:
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:
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>
Pole deklarované pomocí const
má Rozsah bloku.
Pole deklarované v bloku není stejné jako pole deklarované mimo blok:
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:
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é deklarování pole deklarovaného pomocí var
je povoleno kdekoli v programu:
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:
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:
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:
const cars = ["Volvo", "BMW"]; // Allowed
{
const cars = ["Volvo", "BMW"]; // Allowed
}
{
const cars = ["Volvo", "BMW"]; // Allowed
}
Úplnou referenci Array naleznete na naší stránce:
Kompletní reference JavaScript Array.
Odkaz obsahuje popisy a příklady všech Array vlastnosti a metody.