/
Вопросы и ответы
/
JavaScript
/

Чем отличается объявление функции через стрелочную нотацию и function

Чем отличается объявление функции через стрелочную нотацию и function

В чем разница между объявлением функции через const name = () => {} и function?

3 года назад

Ivan Gagarinov

Ответы

1

Объявление стрелочной функции const name = () => {} это присваивание некоторого выражения в константу. Выражением тут является анонимная функция () => {}, и это накладывает теже ограничения, какие существуют для констант: нельзя переназначить константу и нельзя ее использовать до того, как она объявлена, а так же ограничивается зона видимости по всем правилам создания переменных через const, let, var.

Объявление через function () {} расширяет зону видимости функции и позволяет её использовать до создания функции. Например:

const hello = myFunc();
console.log(hello); // => hello
function myFunc() {
  return 'hello';
}

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

3 года назад

Ivan Gagarinov