Объявление const в функции не вызывает ошибки? - PullRequest
0 голосов
/ 05 августа 2020

Почему мы можем объявить константу в функции и вызвать функцию несколько раз без получения ошибки

Uncaught SyntaxError: идентификатор 'newTab' уже был объявлен

Он создает новую константу каждый раз, когда мы вызываем функцию?

Код для иллюстрации:

function foo() {
  const newTab = [123]
  console.log(newTab);
}

Спасибо, если кто-то может просветить меня :)

Ответы [ 2 ]

4 голосов
/ 05 августа 2020

Каждый вызов функции будет создавать новый блок (поскольку javascript является интерпретируемым языком и запускает код построчно, поэтому каждый вызов функции будет создавать локальный контекст выполнения именно там, где функция вызывается) в памяти (последний будет удален на этапе сборки мусора) , поэтому каждый экземпляр const newTab отделен от предыдущего. Может показаться, что он должен выдать ошибку из-за характера определения элемента const, но поскольку последний элемент удален, а новый находится в новом блоке памяти, это не вызовет никаких ошибок.

ПРИМЕЧАНИЕ: Эта статья и это видео могут помочь вам узнать больше о локальном контексте выполнения.

0 голосов
/ 05 августа 2020

function foo() {
        const newTab = [123];
        console.log(newTab);
      }
      foo();
      foo();
      foo();

На самом деле ваш код работает нормально, я не вижу никаких ошибок, как вы это называете? Каждый вызов const newTab будет создаваться в контексте локального выполнения, где все переменные изолированы

...