//Пример
var globalVar = 'I am global';
//Решение
//Используйте локальные переменные внутри функций или модулей.
(function() {
let localVar = 'I am local';
})();
//Пример и решение
data.length = 0;
//Пример
element.addEventListener('click', function() {
// Длительная операция
});
//Решение:
//Удаляйте обработчики событий, когда они больше не нужны.
function handleClick() {
// Длительная операция
}
element.addEventListener('click', handleClick);
// Позже, когда обработчик больше не нужен
element.removeEventListener('click', handleClick);
//Пример
function createHandler() {
let largeObject = new Array(10000).join('x');
return function() {
console.log(largeObject);
};
}
document.getElementById('myButton').addEventListener('click', createHandler());
//Решение:
//Убедитесь, что замыкания не удерживают лишние данные.
function createHandler() {
let largeObject = new Array(10000).join('x');
return function() {
largeObject = null; // Освобождаем память
console.log('Handler called');
};
}
document.getElementById('myButton').addEventListener('click', createHandler());
//Пример
let timer = setInterval(function() {
// Длительная операция
}, 1000);
//Решение:
//Очищайте таймеры, когда они больше не нужны.
clearInterval(timer);
//Пример
function fetchData() {
fetch('https://example.com')
.then(response => response.json())
.then(data => {
// Обработка данных
});
}
fetchData();
//Решение:
//Убедитесь, что обработчики правильно управляют ресурсами и очищают данные.
function fetchData() {
fetch('https://example.com')
.then(response => response.json())
.then(data => {
// Обработка данных
})
.catch(error => {
console.error('Error:', error);
});
}
fetchData();
//Пример
let element = document.getElementById('myElement');
element.remove();
//Решение:
//Удаляйте ссылки на удаленные элементы DOM.
element.parentNode.removeChild(element);
element = null; // Убедитесь, что элемент больше не удерживается
//Пример
let map = new Map();
let obj = {};
map.set(obj, 'value');
//Решение:
//Используйте `WeakMap`, если объекты должны быть автоматически удалены из памяти.
let weakMap = new WeakMap();
let obj = {};
weakMap.set(obj, 'value');
// Когда obj больше не существует, запись в weakMap будет удалена автоматически