Kowka_VN
@Kowka_VN

Почему js залезает в if если он этого не должен делать?

timer(v){
		let func = v;
		let that = this;
		if(timerId != undefined){
			that.clearTimeout(timerId);
		}   
		let timerId = setTimeout(function tick() {
				func();
	  	timerId = setTimeout(tick, 500);
				}, 500);
	}

Этот код выбрасывает ошибку Uncaught ReferenceError: timerId is not defined.
Как я понимаю это, я ему конкретно сказал если не нашёл то иди дальше, в чём ошибка
  • Вопрос задан
  • 89 просмотров
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Читать про let и temporal dead zone.
Если совсем по простому, то нельзя использовать переменную раньше чем она определена с помощью let/const.

Вам надо либо определить timerId раньше, либо использовать var
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
timer(v){
    let func = v,
        timerId = null;
    if (timerId) {
      clearInterval(timerId);
    }   
    timerId = setInterval(function tick() {
        func();
    }, 500);
}


Потому что temporal dead zone
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
summer Ярославль
от 100 000 до 140 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
19 апр. 2024, в 17:06
15000 руб./за проект
19 апр. 2024, в 16:53
1000 руб./за проект
19 апр. 2024, в 16:45
5000 руб./за проект