Функции - это один из основных строительных блоков JavaScript. Функция - это набор операторов, выполняющих задачу. Он будет принимать данные в качестве входных данных, обрабатывать их и возвращать результат в качестве выходных данных.

Объявления функций

Он также называется оператором функции и определением функции. Это самый простой способ определения функции. Функция JavaScript состоит из function ключевого слова, за которым следует имя функции, список параметров в ( ) и набор инструкций в {...}

function sayHello() {
    console.log("Hello World!");
}

sayHello();

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

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

function sayHello(name) {
    console.log("Hello ", name );
}

sayHello("John");

Здесь name - параметр функции sayHello(), а “John” - аргумент, переданный этой функции.

Анонимные функции

Анонимная функция - это функция без имени.

function (){
    alert("Hello World!");
};

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

var sayHello = function() {
    console.log('Hello World');
}
sayHello()

Приведенный выше код является примером вызова анонимной функции переменной. Этот тип объявления также называется функциональным выражением. Подробнее об этом мы поговорим позже.

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

setTimeout(function () { 
        console.log(‘Hello World’) 
}, 1000);

В этом примере мы передаем анонимную функцию в функцию setTimeout(). Функция setTimeout() выполняет эту анонимную функцию на секунду позже.

IIFE (выражения немедленного вызова функций)

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

(function () {
    console.log("Hello World");
})()

Это может показаться запутанным, поэтому давайте разберемся с ним.

Во-первых, следующее определяет анонимную функцию

(function () {
    console.log('Hello World');
})

Во-вторых, завершающие круглые скобки ( ) позволяют вызывать функцию:

(function () {
    console.log('Hello World' );
})();

Если вы хотите передать аргументы, вы можете сделать это следующим образом.

let person = { 
    firstName: ‘John’, 
    lastName: ‘Doe’ 
}; 
(function () { 
   console.log(Hello `${person.firstName} ${person.lastName}`); 
})(person);

Функциональные выражения

Это позволяет нам определять функцию с помощью выражения. Назначив переменную функции. Итак, здесь функция действует как значение переменной. Это также называется именованной функцией (потому что у нее есть имя) и выражением анонимной функции (поскольку мы назначаем анонимную функцию переменной).

var sayHello = function() {
    console.log('Hello World');
}
sayHello()

Выражения именованных функций

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

var showMessage = function sayHello() {
    console.log('Hello World');
}
showMessage()

В приведенном выше примере мы видим, что функция получила имя sayHello(), но мы не можем вызвать ее sayHello() , потому что она не создана в глобальной области. Таким образом, мы можем получить к нему доступ, только позвонив showMessage()

Функция стрелки

Стрелочные функции - это современный способ определения функций. Не требует использования function keyword. Короче говоря, это более короткий способ определения функциональных выражений.

let square = (number) => {
    return number * number
}
sayHello(5);

Мы можем сделать его короче, опуская return keyword

let square = (number) => number * number
sayHello(5);

Функция генератора

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

Объявление функции генератора немного отличается от обычной функции. Здесь мы ставим символ * после function ключевого слова.

Функция генератора возвращает объект, а для этого объекта мы можем использовать метод next (), который вернет объект, который несет 2 важных свойства, таких как value и done. Среди них value содержит фактическое значение, а done указывает, завершено ли выполнение функции генератора или нет.

А теперь давайте посмотрим на пример.

function* generator() {
  yield 1;
  yield 2;
  yield 3;
}

const gen = generator(); 

console.log(gen.next().value); // 1
console.log(generator().next().value); // 2
console.log(generator().next().value); // 3

Как вы можете видеть, здесь мы используем ключевое слово yield, которое используется для приостановки и возобновления работы генератора. Мы не можем использовать ключевое слово return, так как оно завершит выполнение.

Надеюсь, вы нашли эту статью полезной и узнали что-то новое. Если у вас есть вопросы, оставьте их в разделе комментариев.

Не стесняйтесь обращаться ко мне по адресу [email protected].