xmoonlight, не не. Сразу не будет. Это процесс автоматический. Т. е. если мы присвоили undefined - сборщик ещё будет его держать и очистит только при следующем проходе. Если бы он бегал постоянно - ловили бы подвисания всегда. Во Flash сборщик тоже не бежал сразу, если удаляется объект или мы вызывали его непосредственно. Мы просто указывали первоочерёдность удаления/проверки, что вот мы его явно удаляем и он нам не нужен, но ни как его непосредственный вызов.
Sli_M, у вас просчёт, если canvas - то от положения над этим элементом, но его перекрывают другие элементы. соответственно событие теряется, не поднимается. Поэтому вешать надо на document. Но тогда offsetY будет равен офсету именно элементу, который вызвал событие поднял на document. Правильней было бы брать позицию курсора относительно страницы. Т. е. pageY.
Данные свойства доступны в переменной события, возникающие в функциях обработчиках. Например canvas.addEventListener('mousemove', e => {})
Где e - и есть передаваемое событие в функцию. И т. д. по коду.
Т. е section или article не могут иметь тот же main, header или footer?
Покажите большой проект, где программист может потеряться в разметке.
Ибо в большом, как вы говорите, или в малом, а я могу утверждать, этого не произойдёт. Ну если только вы не на статике.
xmoonlight, а я то думаю, что же это за пытливый ум, который вдруг!!! заботится о памяти в JS )))
Ну тогда мне не придётся объяснять про профайлер, как это было в FD )))
xmoonlight, ну так запустите бесконечный цикл. Откройте профайлер и смотрим.)))
Хотя от Chromenium и так в ужасе в плане употретбления памяти в общей сложности.... что зависания Flash от рукожопости разработчика приложения, просто детский лепет.
HTML5 и всё иже с ним просто пропиарен и все дружно похоронили хорошую технологию. Adobe не обиделся и все смотрим, что происходит на самом деле. Иной раз просто нельзя держать десять вкладок открытыми, ибо видюха загружена по полной по 3D.
xmoonlight, а почему не корректно?
Всё правильно. Переопределение функции. Старое значение функции (переменной) будет удалено в последствии и это правильно, т. к. объект/функция больше не доступны после переопределения и, соответственно, будут удалены.
xmoonlight, да. Ссылка сохранилась.
Сделав тесты понял, что пока в коде есть ссылка(упоминание) на вызов функции - сборщик её не удалит.
Т. е. если вы где-то попытались удалить функцию, а через какое-то время её вызвали - сборщик мусора не удалит ссылку.
Хотя если в консоли писать поэтапно - ссылка удалиться. Ибо интерпретатор не знает, что вы введёте в консоль.
Из этого получается вопрос, что именно вы хотите получить на выходе?
PS:
Когда-то на Flash мы могли убить только объекты. С функциями было сложнее.
window.foo=function(){}
Нет. Вы перезаписали функцию delete window.fo;
Вот теперь вы удалили ссылку на функцию.
А дальше сборщик мусора сделает сам освобождение памяти. Этот процесс автоматический.
Развивайтесь. Постепенно вас, если вы будете искать, практически само найдёт то, что вам нравится.
Вы ни один такой.
Просто вам не нравится верстать дизайны, от которых у вас чувство "не выкалывайте мне глаза". Но вам это приходится делать. А не делать, значит не заработать ни то, что на еду, а и на ваше развитие.
Есть приоритеты. Научитесь их расставлять.