Следует ли мне избегать вложенных функций?

#javascript #function #performance #optimization #nested-function

Вопрос:

Это дерево в наши дни

«Старайтесь избегать вложенных функций, потому что они всегда будут лениво анализироваться, поэтому они будут анализироваться повторно, и это повлияет на производительность».

итак, должен ли я использовать это

 function fun() {
    function foo() {}
    foo();
}
 

или это

 function foo() {}
function fun() {
    foo();
}
 

Какой из них лучше с точки зрения производительности?

Комментарии:

1. Из приведенного примера выбор вложенности является скорее вопросом foo инкапсуляции/видимости, чем (на самом деле не существующей) проблемой производительности. Используйте первый, если только fun разрешен доступ и вызов foo . Используйте последнее в случае foo , если область применения не имеет значения.

2. » Это дерево в наши дни » — ???

3. Нет, вложенные функции не анализируются повторно. Да, они могут быть проанализированы лениво, что на самом деле полезно для производительности. Да, объекты функций могут создаваться заново при каждом выполнении внешней функции, что негативно скажется на производительности, но не сильно. Во всяком случае, это было бы преждевременной микрооптимизацией . В первую очередь сосредоточьтесь на удобочитаемости/ремонтопригодности.

4. Я голосую за то, чтобы закрыть этот вопрос, потому что ericlippert.com/2012/12/17/performance-rant