Функция — это рецепт, который позволяет вам группировать множество повторяющихся задач, чтобы вы могли вызывать их снова и снова. JavaScript позволяет создавать функции разными способами; конечно, JavaScript — это функциональный язык программирования. Итак, вот 4 способа сделать функцию в JS:

(Дайте мне знать, если я что-то пропустил)

1. Ключевое слово функции

Создайте функцию, используя ключевое слово function, за которым следует имя функции в скобках:

function sayHello(name) {
  // Do something
}

Эта функция может быть вызвана sayHello("Tamal");. Она также имеет доступ к объектам globalthis и arguments.

2. Анонимная функция

Вы можете удалить часть sayHello, но теперь это анонимная функция.

function() {
  // Do something
}

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

setTimeout(function() {
  // Do something
}, 1000)

Но вы можете назначить эту функцию переменной следующим образом:

var sayHello = function() {
  // Do something
}

Тогда вы можете назвать это просто sayHello()

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

sayHello()
// ERROR! doesn't work, because it's not declared yet
var sayHello = function() {
  // Do something
}

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

sayHello()
// Works like a charm!
function sayHello() {
  // Do something
}

3. Стрелочные функции (лямбда)

Создайте функцию, не используя ключевое слово function, но вы должны использовать символ толстой стрелки =>.

() => {
  // Do something
}

Это компактный способ создания анонимных функций, вы даже можете написать в одну строку: () => // Do something

Назначьте его переменной, чтобы вы могли вызывать его из другого места:

var sayHello = (name) => // Do something

Одним из недостатков использования стрелочной функции является то, что у вас нет доступа к глобальному объекту this и свойству arguments(массив параметров) функции.

4. Выражение немедленно вызываемой функции

Функция, которая запускается немедленно, и у вас больше не будет доступа к ней. Это выглядит так:

(function(){
  // Do something
})()

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

(function(name){
  // Do something
})(“Tamal”)

Бонус: 5. Методы также являются функциями

Вы можете поместить функцию внутрь объекта, они называются методами. Функция внутри объекта может выглядеть так:

var person = {
  sayName: function() { // Do something }
}

Вы также можете определить метод с таким аккуратным синтаксисом:

var person = {
  sayName() { // Do something }
}

Какой из них использовать и почему?

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

Сейчас я в основном использую ключевое слово функция, чтобы сделать мой код более читабельным. Для однострочных или небольших функций-заполнителей я использую синтаксис стрелочной функции, как в этом примере:

fetch(url)
  .then(// Do something)
  .catch(err => console.log(err))

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

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

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

Что бы вы ни использовали, полностью зависит от вас, но убедитесь, что вы соответствуете своему коду.

Если вы в Nodejs, вы можете проверить мои другие сообщения: