Константа JavaScript
Ключевое const
слово было введено в
ES6 (2015) .
Переменные, определенные с const
помощью, не могут быть повторно объявлены.
Переменные, определенные с const
помощью, не могут быть переназначены.
Переменные, определенные с помощью const
, имеют блочную область.
Не может быть переназначен
Переменная const
не может быть переназначена:
Пример
const PI = 3.141592653589793;
PI = 3.14; // This will give an error
PI = PI + 10; // This will also give an error
Должен быть назначен
Переменным JavaScript const
должно быть присвоено значение при их объявлении:
Правильный
const PI = 3.14159265359;
Неправильно
const PI;
PI = 3.14159265359;
Когда использовать константу JavaScript?
Как правило, всегда объявляйте переменную с помощью const
, если вы не знаете, что значение изменится.
Используйте const
, когда вы объявляете:
- Новый массив
- Новый объект
- Новая функция
- Новое регулярное выражение
Постоянные объекты и массивы
Ключевое слово 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");
Но вы НЕ можете переназначить массив:
Пример
const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"]; // ERROR
Постоянные объекты
Вы можете изменить свойства постоянного объекта:
Пример
// You can create a const object:
const car = {type:"Fiat", model:"500", color:"white"};
// You can change a property:
car.color = "red";
// You can add a property:
car.owner = "Johnson";
Но вы НЕ можете переназначить объект:
Пример
const car = {type:"Fiat", model:"500", color:"white"};
car = {type:"Volvo", model:"EX60", color:"red"}; //
ERROR
Поддержка браузера
Ключевое 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 |
Область блока
Объявление переменной with const
похоже на то, let
когда речь идет о Block Scope .
X, объявленный в блоке, в этом примере не совпадает с x, объявленным вне блока:
Пример
const x = 10;
// Here x is 10
{
const x = 2;
// Here x is 2
}
// Here x is 10
Вы можете узнать больше о области действия блока в главе « Область действия JavaScript» .
Повторное объявление
Переопределение переменной JavaScript var
разрешено в любом месте программы:
Пример
var x = 2; // Allowed
var x = 3; // Allowed
x = 4; // Allowed
Повторное объявление существующей var
или let
переменной const
в той же области не допускается:
Пример
var x = 2; // Allowed
const x = 2; // Not allowed
{
let x = 2; // Allowed
const x = 2; // Not allowed
}
{
const x = 2; // Allowed
const x = 2; // Not allowed
}
Переназначение существующей const
переменной в той же области не допускается:
Пример
const x = 2; // Allowed
x = 2; // Not allowed
var x = 2; // Not allowed
let x = 2; // Not allowed
const x = 2; // Not allowed
{
const x = 2; // Allowed
x = 2;
// Not allowed
var x = 2;
// Not allowed
let x = 2;
// Not allowed
const x = 2; // Not allowed
}
Допускается повторное объявление переменной с const
, в другой области или в другом блоке:
Пример
const x = 2; // Allowed
{
const x = 3; // Allowed
}
{
const x = 4; // Allowed
}
Постоянный подъем
Переменные, определенные с помощью var
, поднимаются вверх и могут быть инициализированы в любое время.
Значение: вы можете использовать переменную до ее объявления:
Пример
Хорошо:
carName = "Volvo";
var carName;
Если вы хотите узнать больше о подъеме, изучите главу « Подъем JavaScript» .
Переменные, определенные с помощью const
, также поднимаются вверх, но не инициализируются.
Значение: использование const
переменной до ее объявления приведет к
ReferenceError
:
Пример
alert (carName);
const carName = "Volvo";