Ответ 1
Насколько я узнал, функция
die
будет создаваться (распределяться) каждый раз, когда вызываетсяfreak
.
Да. Это правда. Создается новый функциональный объект.
Поэтому, если
freak
получает много времени, это означает, что большая часть памяти будет потрачена впустую [...]
Для очень маленького и обычно несущественного значения "потрачено впустую".
В наши дни двигатели JavaScript очень эффективны и могут выполнять множество трюков/оптимизаций.
Например, только функциональный объект (но не фактический код функции!) должен быть "дублирован" внутри.
[...] ли это означает, что вложенные функции следует полностью исключить?
Нет. Существует проблема нет "потерять" без фактического тестового сценария, который показывает иначе. Эта идиома (вложенных и анонимных функций) очень распространена в JavaScript и очень хорошо оптимизирована для.
Вложенные функции предоставляют множество преимуществ, включая самодокументирующий код, небольшие автономные лексические области и другие преимущества изоляции/организации кода.