Задать вопрос
@FaTaLcheG

Правильно отладка в браузере Chrome отображает переменные?

Читаю Современный учебник JavaScript с сайта https://learn.javascript.ru/

В одном из заданий "В какую переменную будет присвоено значение?"

var value = 0;
      function f(){
        if(1){
          value = true;
        }else{
          var value=false;
        }
          alert(value);
      };

      f();


Есть коментарий по этому заданию

В какую переменную будет присвоено значение?

Результатом будет true, т.к. var обработается и переменная будет создана до выполнения
кода.

Соответственно, присвоение value=true сработает на локальной переменной, и alert
выведет true.

Внешняя переменная не изменится.

P.S. Если var нет, то в функции переменная не будет найдена. Интерпретатор обратится за
ней в windowи изменит её там.
Так что без var результат будет также true, но внешняя переменная изменится


Но что интересует так это дебагер который на моменте завершения функции показывает что в глобальной переменной value присвоено значение true

5cd6c7435c781156818511.jpeg

Или возможно в глобальной области видимости найти значение value = 0? во вкладке scope
  • Вопрос задан
  • 890 просмотров
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
Есть такая штука как "поднятие" (hoisting) (1, 2)

Из-за
else{
          var value=false;
        }

Внутри функции f есть своя переменная value, и когда вы делаете value = true, то меняетсмя именно она.

Если убрать "var", то будет найдена ближайшая value из родительских объектов. Будет меняться window.value.
Ответ написан
profesor08
@profesor08 Куратор тега JavaScript
Похоже на глюк, видать в тултип попадает не та инфа, которая нужна. Попробуй сообщить о баге. Но если дать переменным разные имена, то увидишь, что после выполнения кода, при наведении на первую переменную, покажет что она не объявлена. Скорее всего это как-то связано с областью видимости, и в локальной области нету переменных с таким названием.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы