Рассмотреть возможность:
function f1() {
function n11() { .. lots of code .. };
const n12 = () => { .. lots of code .. };
return n11()+n12()+5;
}
const f2 = () => {
function n21() { .. lots of code .. };
const n22 = () => { .. lots of code .. };
return n21()+n22()+5;
}
Я пытаюсь понять последствия вызова f1 и f2 для памяти.
Что касается n11, этот ответ говорит:
На какую-то очень маленькую и обычно несущественную стоимость потраченного впустую. В наши дни движки JavaScript очень эффективны и могут выполнять множество трюков/оптимизаций. Например, только объект-функция (но не фактический код функции!) должен быть продублирован внутри. Нет проблемы расточительства без фактического тестового примера, который показывает обратное. Эта идиома (вложенных и анонимных функций) очень распространена в JavaScript и очень хорошо оптимизирована для него.
Однако я хочу знать, относится ли это также к функциям стрелок (т.е. n12, n21 и n22) ... будут ли накладные расходы только объектом функции, как указано выше, или весь код вложенной функции будет дублироваться каждый раз, когда вызывается f1/f2?
спасибо!