Мне сложно понять немного кода примера из книги JavaScript Allongé (бесплатно в онлайн-версии).
Пример кода - это функция для вычисления окружности для заданного диаметра. Он показывает различные способы привязки значений с именами. Один из способов сделать это, согласно книге, таков:
(
(diameter) =>
((PI) => diameter * PI)(3.14159265)
)(2);
// calculates circumference given diameter 2
Далее говорится:
Ну, морщинка с этим заключается в том, что обычно функции вызова значительно дороже оценки выражений. Каждый раз, когда мы вызываем внешнюю функцию, хорошо вызываем внутреннюю функцию. Мы могли бы обойти это, написав
(
((PI) =>
(diameter) => diameter * PI
)(3.14159265)
)(2);
Я не могу понять, как он обходит ситуацию при вызове двух функций, не так ли есть два вызова функций в обоих примерах? Как они отличаются друг от друга?