Как сказано в комментарии, функции с разными областями действия никогда не будут ===
друг другу.
Переполнение памяти простой функции почти ничего не стоит, особенно на современном оборудовании и современных движках JS, поэтомупрежде чем тратить на это усилия, убедитесь, что это не случай преждевременной оптимизации - запустите тест производительности и убедитесь, что это действительно узкое место в первую очередь.
В настоящее время вы проходитемассив функций, предположительно, чтобы их можно было перебирать и вызывать позже.Подумайте о том, чтобы передать просто someArray
и someFunc
, который принимает 2 аргумента и возвращает вместо него число;массив примитивов занимает меньше памяти, чем массив функций.Например, следующий код занимает для меня ~ 1400M памяти в Chrome:
const someFunc = (a) => (b) => a + b;
const arrayOfFunctions = Array.from({ length: 1e7 }, (_, i) => someFunc(i));
// eventually use arrayOfFunctions
Но если вы просто сохраните свой someArray
и вызываете функцию только тогда, когда вам нужен доступ к окончательному число возвращается, объем памяти намного меньше:
const someFunc = (a, b) => a + b;
const someArray = Array.from({ length: 1e7 }, (_, i) => i);
// eventually, once you need access to the final numbers, iterate through someArray and call someFunc with it:
// ...
const theBArgument = 5;
const result = someArray.map(a => someFunc(a, theBArgument));
До result
для меня в Chrome используется только ~ 120M памяти.