Обмисли:
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?
Мерси!