Удаление узла
Здравствуйте.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
let img = document.createElement('img');
img.setAttribute('src', '7.jpg');
img.addEventListener('error', ()=>{console.log('ошибка'); img.remove();});/*Здесь!*/
img.addEventListener( 'load', ()=>{console.log('загрузился я'); setTimeout(()=>{app.appendChild(img)},2000);});
</script>
</body>
</html>
Например, загружаю я картинку, а её, картинки, нет, но память то я выделил (пусть немного, но тем не менее). если в консоль ввести img, то мы получим <img src="7.jpg"> как это удалить? я так понимаю, что эта фигня так и будет болтаться пока её явно не удалишь. по аналогии с другими языками: img = null; delete img; ошибок код не вызывает, но насколько это корректно и как в такой ситуации правильно поступить? |
Luca, ничего вычищать не нужно, почитайте про сборщик мусора.
|
Сборщик мусора удаляет область памяти, если на эту область нет ссылок, те в данном случае
img = null; но саму переменную img сборщик не удалит ведь. имхо хотя бы img = null точно надо |
Цитата:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
(function(){
let img = document.createElement('img');
img.setAttribute('src', '7.jpg');
img.addEventListener('error', ()=>{console.log('ошибка'); img.remove();});/*Здесь!*/
img.addEventListener( 'load', ()=>{console.log('загрузился я'); setTimeout(()=>{app.appendChild(img)},2000);});
})();
</script>
</body>
</html>
Или как там это пишут в новомоднем синтаксисе? |
Цитата:
|
img.remove(); первое, что сделал, но в ответ после этого Цитата:
Цитата:
|
Цитата:
После того как она отработает, все переменные, которые были в ней созданы исчезнут. Если, конечно, не останется функций, которые смогут их использовать. :D |
| Часовой пояс GMT +3, время: 11:22. |