Каково абсолютное значение const? - PullRequest
0 голосов
/ 21 апреля 2019

Так что я просто хотел бы получить некоторые разъяснения, чтобы я знал, что мы на самом деле здесь делаем. Я изучаю функцию const в es6, и я не совсем уверен, как она что-то меняет.

Во-первых, если я определяю переменную с помощью const, а затем присваиваю ей новое значение с помощью var, все происходит сбой. Вот что я имею в виду

<script>
const x = 10;
var  x = 10;
// x doesn't get any value assigned
</script>

Во-вторых, если я определю универсальную переменную с помощью var, а затем определю локальную переменную с помощью const (что я мог бы сделать так же, как с var или let), она будет работать только в той функции, где локальная переменная определена с помощью const, но за ее пределами. функция, это все еще старое значение, которое я определил с помощью var. Вот что я имею в виду

<script>
var  x = 10;
  // Here x is 10
{  
const x = 2;
  // Here x is 2
}
// Here x is 10
</script>

Так что же тогда значит «const»? или я что-то не так делаю?

Ответы [ 2 ]

1 голос
/ 21 апреля 2019

Прежде всего, стоит отказаться от использования var, если вы пишете ES6. Просто используйте const для констант и let для переменных.

В первом примере происходит сбой, потому что вы переопределяете const , который уже определен в этой области . То же самое происходит при переопределении переменной let. Я знаю, что var позволяет переопределять, но это затрудняет чтение кода.

Второй пример работает, как и ожидалось, потому что вы определяете константу в новой области видимости. Пример ниже тоже подойдет.

<script>
const x = 10;
{  
  const x = 2;
}
</script>

Итог : вы не можете переопределить переменные [let] и константы [constants] в одной и той же области видимости.

0 голосов
/ 21 апреля 2019

Я думаю, что это больше связано с областью, а не с const / var.

Объявление const создает доступную только для чтения ссылку на значение. Это не означает, что значение, которое оно содержит, является неизменным, просто то, что идентификатор переменной не может быть переназначен.

Подробнее здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const

...