delete timer;
на самом деле ничего не сделает, потому что вы можете только удалить свойства объекта. timer
не является свойством объекта, поэтому его нельзя удалить. (Технически это свойство объекта window, но Javascript, если вы не назначили window.timer
, то вы не можете удалить верхние уровни). Когда delete возвращает false
, это означает, что нечего было удалять.
Тайм-аут, который вы установили, является ссылкой на функцию. Это то, что нужно удалить, а не целое число, возвращаемое setTimeout
. Только среда выполнения (браузер) знает, как удалить эту ссылку функции по ее идентификатору, что и было возвращено с setTimeout
.
Возможно, вы захотите прочитать [это] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete) – Aprian
'delete' удалит объект,' clearTimeout 'вместо этого очистит таймер, связанный с переменной. –
Кроме того **, даже если вы можете ** (попробуйте без var) удалить таймер, который не будет таймер 'clearTimeout'. – Aprian