Хтось сказав мені, що коли ви використовуєте, setTimeoutви повинні очистити це за допомогою clearTimeout. Я можу зрозуміти до закінчення тайм-ауту, але чому після? Або це неправда?
Відповіді:
Це неправда - очищення тайм-ауту після його закінчення не шкодить, але це не потрібно.
Відповідно до специфікації :
Якщо дескриптор не ідентифікує запис у списку активних таймерів об'єкта WindowOrWorkerGlobalScope, для якого було викликано [clearTimeout], метод нічого не робить.
Іншими словами, це не-операція; нічого не відбувається, і помилка не буде викинута.
Насправді вам не потрібно використовувати clearTimeout, ви використовуєте його лише в тому випадку, якщо ви бажаєте скасувати вже встановлений тайм-аут, перш ніж це станеться.
Це, як правило , більш практично використовувати clearIntervalз , setIntervalтому що setIntervalзазвичай працює на невизначений термін.
Немає причин очищати його після його завершення. Можливо, вашого друга переплутали з setInterval.