03.iv Tail-call optimization
ES6 включает в себя поддержку оптимизации хвостовых вызовов. Однако это в стандарте, на деле стоит смотреть какой из браузеров поддерживает эту функциональность. Оптимизация хвостовых вызовов выполняется только в строгом режиме.
Оптимизация хвостовых вызовов возможна при условии, оптимизируемый вызов находится в хвостовой позиции, если:
Вызов функции является последним выражением функции;
Вызовы функции находятся в тернарном операторе (
? :
);Логический И (
||
);Логический ИЛИ (
&&
);Оператор запятой (
,
);
Тогда точка возврата в родительскую функцию уже не нужна и фрейм этой функции может быть сброшен со стека.
В ES6 не имеет значения какую именно функцию вы вызываете:
Функию
Метод
Прямой вызов метода
Косвенные вызовы метода
Отдельные вызовы функций не находятся в хвостовой позиции:
Last updated
Was this helpful?