Страницы

Поиск по вопросам

вторник, 9 июля 2019 г.

Чем отличается анонимная функция от именованной?

Понятно что анонимная функция не имеет имени. Есть ли еще какие то отличия кроме указанной? В частности интересует каким контекстом выполнения она владеет кроме своего, а то есть к каким пространствам имен она имеет доступ.


Ответ

С точки зрения поведения (определения this, создания замыканий, объявления внутри переменных) разницы между именованной и анонимной функцией - нет
Если обратиться к спецификации, можно отметить, что функции можно разделить на FunctionDeclaration и FunctionExpression
FunctionDeclaration может быть анонимной только при объявлении ее как export default, при этом, при создании объекта функции ей присваивается имя default
Что касается FunctionExpression: к именованному FunctionExpression можно обращаться в его теле по имени, что позволяет делать рекурсивные вызовы.

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

Отправить комментарий