Я знаю, что это было сказано сто раз , Но я все еще вижу, как люди провозглашают (даже в некоторых книгах JavaScript), которые const неизменен. Это не Анкет
const in javaScript не является неизменным
В JavaScript значения могут храниться в переменной с var Ключевое слово, самый совместимый способ объявления переменных:
var greet = "Hello"; var year = 89; var not = false;
Я сказал совместимый, потому что с Ecmascript 2015 у нас есть два других варианта: пусть и констант . Старые браузеры могут не поддерживать эти новые ключевые слова, и если только не используйте «транспиллер», как Вавилон, вы можете столкнуться с ошибками. Вместо нового браузера вы можете пожинать преимущества пусть и const которые отличаются от var двумя способами:
- оба
пустьиconstСоздайте свой собственный «пузырь» (область применения) constне может быть пересмотрен и повторно объявлен
Под «пузырем» я имею в виду, что переменная, объявленная с пусть или констант Не перекрывайте с тем же именем переменной, объявленной в ограждающей или во внешнем «пузырьке». Например:
let name = "John";
{
let name = "Valentino";
console.log(name); // "Valentino"
}
console.log(name); // "John"
Здесь имя Кажется дубликатом, но на самом деле это две разные переменные в их собственном пузыре. const имеет такое же поведение:
const name = "John";
{
const name = "Valentino";
console.log(name); // "Valentino"
}
console.log(name); // "John"
Тот же код с var Вместо этого ведет себя по -другому:
var name = "John";
{
var name = "Valentino";
console.log(name); // "Valentino"
}
console.log(name); // "Valentino"
Как я сказал const не может быть переназначен и переименован в то же пузырь. Если вы попытаетесь переоборудовать A констант Вы получаете синтаксис: Идентификатор уже был объявлен ». И если вы переназназите какое -то значение на ту же постоянную, которую вы получите »TypeError: Назначение постоянной переменной “. Следующий пример выбрасывает ошибку:
const name = "John"; const name = "Valentino"; // SyntaxError: Identifier 'name' has already been declared
И этот код также бросает:
const name = "John"; name = "Valentino"; // TypeError: Assignment to constant variable.
Но, пожалуйста, обратите внимание, потому что, когда мы говорим: «Констать не может быть переназначена и переиздана», что не означает const неизменен . Это тема, которая Поездка буквально каждый разработчик JavaScript, с которым я разговариваю Анкет На самом деле любой Немного более сложная структура данных JavaScript, такую как массив или объект, более чем измененна Даже когда назначено const :
const person = {
name: "John",
age: 21
};
person.name = "Valentino";
console.log(person);
// { name: 'Valentino', age: 21 }
// Oh, I wish I was 21 for real!
Как это неизменно? Вот массив:
const list = [1, 1, 3, 2, 5]; list.shift(); console.log(list); // [ 1, 3, 2, 5 ]
Снова Не неизбежно Анкет В следующий раз, когда кто -то скажет: «Констать неизменен», покажите ему/ей пару хитростей.
Счастливого кодирования!
Оригинал: “https://dev.to/valentinogagliardi/once-and-for-all-const-in-javascript-is-not-immutable-2gop”