Задать вопрос
Hyubert
@Hyubert
JS

Scope JS. Почему так?

Почему 1 вариант работает , а второй нет? Должно же бить наоборот

var timeout, 
    counter = 0;

var updateCounter = function() {
  
    $('.counter').text(counter++);
    timeout = setTimeout(updateCounter, 1000);
   }

updateCounter();


var updateCounter = function() {
var timeout, 
    counter = 0;
  
    $('.counter').text(counter++);
    timeout = setTimeout(updateCounter, 1000);
   }

updateCounter();
  • Вопрос задан
  • 138 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    JavaScript
    3 месяца
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
  • Skypro
    JavaScript-разработчик с нуля
    9 месяцев
    Далее
Решения вопроса 3
Потому что counter обнуляете каждый раз.
Ответ написан
Комментировать
alsopub
@alsopub
Во втором случае переменные timeout и counter создаются при каждом вызове функции updateCounter() и уничтожаются по ее завершению.
В первом случае - они глобальные (относительно функции) и создаются один раз.
Ответ написан
Комментировать
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Во втором варианте вы при каждом вызове функции updateCounter внутри неё переменную counter приравниваете нулю. Разумеется, это неправильно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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