Чтобы сэкономить память браузера, должен ли я уничтожить массив всплывающих подсказок начальной загрузки после того, как я отрисовал новые всплывающие подсказки?

#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 , он будет собираться как мусор.