#javascript #twitter-bootstrap #bootstrap-5
Вопрос:
Я приношу извинения, если это дублирующий вопрос, но сначала я погуглил, не получив полезного ответа.
Сценарий
Я выполнял работу по отображению результатов поиска, и в каждом результате поиска есть кнопка, которая отображает всплывающие подсказки, вот упрощенный код, они уже отлично работают для меня:
let searchAndDisplayResults = (function () {
let tooltips;
return (key) => {
// search results container
let searchContainer = $('.search-results-container');
// clear elements first
searchContainer.html('');
// get search results information array
let searchedResultsArray = getSearchedResults(key);
// render search results to page(simplified)
searchedResultsArray.forEach((ele) => {
searchContainer.append(`<div>${ele}</div><i class='bi-plus' data-bs-toggle="tooltip" title="Some hint for this button"></i>`);
}
// enable tooltip
tooltips = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')).map(tooltipTriggerEl => { return new bootstrap.Tooltip(tooltipTriggerEl) });
}
})();
Примечание: код, который включает подсказки выше, взят отсюда.
Каждый раз, когда в функцию был передан новый ключ поиска, элементы старых результатов поиска будут уничтожены, а новые результаты поиска будут повторно отображаться, но, похоже, остается переменной tooltips
не удалять каждый раз, когда результаты поиска были повторно отображены.
Вопрос
Поэтому, чтобы сэкономить потребление памяти браузера, я задаюсь вопросом, нужно ли мне удалять массив подсказок каждый раз, когда результаты поиска были повторно отображены? Например, должен ли я использовать код, подобный приведенному ниже, для уничтожения переменной tooltips
каждый раз, когда будут отображаться новые результаты поиска?
if (tooltips != null) {
for (let tooltip of tooltips) {
delete tooltip;
}
}
Ответ №1:
Нет, в этом нет необходимости. Это tooltips = something
приведет к удалению ссылки из старого tooltips
массива. До тех пор , пока на него не будет никаких других ссылок tooltips
, он будет собираться как мусор.