Эффективность часто вызываемой функции инициализации массива в JS - PullRequest
0 голосов
/ 18 октября 2019

У меня есть код, который может анализировать сотни объектов (исходя из сетевых запросов). Затем этот код вызывает функцию, чтобы определить, соответствует ли она значению.

IE

(1..100+){
    isMatch(foo);
}

function isMatch(foo) {
    const matches = ["apple", "orange", "strawberry"];
    return matches.includes(foo);
}

Мой вопрос заключается в том, как JS обрабатывает создаваемый массив соответствий. Функция isMatch потенциально может быть вызвана более 100 раз. Он постоянно создает экземпляр этого массива в памяти каждый раз или автоматически кеширует его? Или это не проблема с памятью, потому что размер массива и GC?

Кроме того, есть ли различия в производительности между использованием array.include и регулярным выражением для фактического сопоставления?

1 Ответ

1 голос
/ 18 октября 2019

const имеет значение для функции и поэтому создается и уничтожается снова и снова. Если у вас есть фиксированный список, объявите его в более широкой области и либо обратитесь к нему непосредственно в isMatch, либо передайте его в качестве аргумента, например isMatch(foo, LIST_OF_MATCHES)

...