Каковы соображения для / против различных стилей современных определений функций JavaScript?

Я пытаюсь решить, какой стиль использовать для определения функций уровня модуля.

Вот варианты, которые я рассмотрел:

// function expression using an arrow
const foo = (arg)=> {
    // ...
};


// function expression with the `function` keyword
const bar = function(arg){
    // ...
};


// function declaration
function baz(arg){
    // ...
}

Я предпочитаю foo стиль, но он кажется нестандартным. Есть ли какие-то соображения против этого, которые я не учел? Например, существуют ли значительные потери производительности при использовании выражений функций, constили стрелки, либо изначально, либо при переносе?

Вот что у меня так далеко:

Преимущества использования const с выражением функции вместо использования объявления функции:

  • Ничто никогда не поднимается, если вы используете только const а также letэто упрощает работу с языком.
  • С помощью const заставляет интерпретатор выдавать ошибку, если вы пытаетесь определить две функции с одним и тем же именем в одной и той же области видимости (это было удивительно полезно).
  • С помощью const позволяет вам сказать, что вы имеете в виду: большую часть времени вы хотите определить функцию, а не присвоить ее переменной.
  • С помощью const вместо объявления функции становится понятнее, что функции являются значениями в JS.

Недостатки функциональных выражений:

  • Объявление функции приводит к тому, что и объявление переменной, и тело функции переносятся в верхнюю часть текущего тела функции (я думаю). На самом деле это может быть полезно, если вы хотите выложить свои файлы JS с кодом, использующим функции вверху, и определениями функций внизу.

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

Преимущества использования стрелок вместо function ключевое слово:

0 ответов

Другие вопросы по тегам