Рубрики
Без рубрики

Раз и навсегда: const in javaScript не является неизменным

Это тема, которая станет буквально каждого разработчика JavaScript, с которым я разговариваю. Tagged с WebDev, JavaScript, ES6, начинающие.

Я знаю, что это было сказано сто раз , Но я все еще вижу, как люди провозглашают (даже в некоторых книгах 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”