Константа JavaScript


Оглавление

    Показать оглавление


ECMAScript 2015 (ES6)

В 2015 году в JavaScript появилось новое важное ключевое слово: const.

Стало обычной практикой объявлять массивы с помощью const:

Пример

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

Попробуйте сами →

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

Невозможно переназначить

Массив, объявленный с помощью const, не может быть переназначен:

Пример

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

Попробуйте сами →

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

Массивы не являются константами

Ключевое слово const немного вводит в заблуждение.

Он НЕ определяет постоянный массив. Он определяет постоянную ссылку на массив.

Благодаря этому мы по-прежнему можем изменять элементы постоянного массива.


Элементы можно переназначать

Вы можете изменить элементы постоянного массива:

Пример

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

Попробуйте сами →

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

Поддержка браузера

Ключевое слово const не поддерживается в Internet Explorer 10 и более ранних версиях.

В следующей таблице определены первые версии браузера с полной поддержкой ключевого слова const:

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

Назначается при объявлении

Переменным const JavaScript должно быть присвоено значение при их объявлении: <p>Значение: массив, объявленный с помощью const, должен быть инициализирован при его объявлении.

Использование const без инициализации массива является синтаксисом. ошибка:

Пример

Так не пойдет:

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

Массивы, объявленные с помощью var, можно инициализировать в любое время.

Вы даже можете использовать массив до его объявления:

Пример

Хорошо:

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

Попробуйте сами →

<!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, имеет область блока.

Массив, объявленный в блоке, — это не то же самое, что массив, объявленный вне блока:

Пример

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"

Попробуйте сами →

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

Массив, объявленный с помощью var, не имеет области действия блока:

Пример

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"

Попробуйте сами →

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

Вы можете узнать больше о области действия блока в главе «Область действия JavaScript».



Переобъявление массивов

Переобъявление массива, объявленного с помощью var, разрешено в любом месте программы:

Пример

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

Переобъявление или переназначение массива в const в той же области или в тот же блок, не допускается:

Пример

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

Переобъявление или переназначение существующего массива const в той же области или в тот же блок, не допускается:

Пример

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
}

Переобъявление массива с помощью const в другой области видимости или в другом блоке разрешено:

Пример

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

Полная ссылка на массив

Для получения полной информации о массивах перейдите по ссылке:

Полное руководство по массивам JavaScript.

Справочник содержит описания и примеры всех Array. свойства и методы.