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

Цель этой статьи — обсудить функции JavaScript и основные формы, в которых они могут быть определены.

Способы определения функции в JavaScript:

  1. Объявление функции:

В объявлении функции синтаксис выглядит следующим образом:

а. функция ключевое слово
b. имяфункции
c. параметры (если есть)
заключены в круглые скобки
d. Блок кода функции заключен в фигурные скобки.

fuction nameOfFunction(parameter1, parameter2){
  return parameter1 + parameter2
};

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

function areaOfTriangle(base, height) {
  return 0.5 * base * height
};

//Calling the function
console.log(areaOfTriangle(6, 3));

//Result --> 9

2. Выражение функции:

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

Синтаксис выражения функции выглядит следующим образом:

а. Объявление переменной (которое также может быть именем функции).
b. Ключевое словоfunction, за которым следует
c. параметры (если есть)
заключены в круглые скобки
d. затем блок кодафункции, который должен быть заключен в фигурные скобки.

let variableName = function (a, b) {
  return a * b
};

//call the function
console.log(variableName(5, 4));

//Result ==> 20

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

Пример: найдем квадратный корень каждого числа в данном наборе числовых массивов, totalScores.

//The function that maps through each number in a given array set
function map(d, ele) {
  const result = new Array(ele.length);
  for (let i = 0; i < ele.length; i++) {
    result[i] = d(ele[i]);
  }
  return result;
};

//The function that finds the square root of each number using Math.sqrt()
const squareRoot = function (num) {
  return Math.sqrt(num);
};

//Given set of numbers
const totalScores = [100, 225, 400, 900];

//Using Function expresion to map through and get the square root of the numbers
const squareRootOfScores = map(squareRoot, totalScores);

console.log(squareRootOfScores);
//Result ==> [10,15,20,30]

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

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

Синтаксис стрелочной функции выглядит следующим образом:

а. Объявление переменной (которое также может быть именем функции).
b. параметры (если несколько параметров
заключены в круглые скобки). Если присутствует только один параметр, круглые скобки можно опустить.
c. «Толстая» стрелка =>
d. блок кодафункции.

//With one parameter
let funcName = param => param * 2

//With more parameters
let anotherFuncName = (param1, param2, param3) => {
  return param1 * param2 / param3
};

Пример:

я. Рассмотрим функцию, которая дает квадраты чисел.

let squareOfNum = num => num * num

console.log(squareOfNum(5))

//Result ==> 25

II. Рассмотрим также функцию, которая вычисляет площадь прямоугольника.

let areaOfRectangle = (l, b) => {
  return l * b
};

areaOfRectangle(20, 3);
//Result ==> 60

4. Функция IIFE:

IIFE — это сокращение от немедленно вызываемого функционального выражения. Это тип функции, которая вызывается немедленно и запускается сразу после ее определения.

Это шаблон проектирования, который также известен как самоисполняющийся анонимный.

Синтаксис IIFE выглядит следующим образом:

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

б. Затем немедленно вызываемое функциональное выражение (), через которое движок JavaScript будет напрямую интерпретировать функцию.

(function (param1, param2) {
return param1 * param2
})(9,17)

Пример:

(function (a, b) {
    return a + b
  })(12, 13);

//Result ==> 25

Давайте рассмотрим некоторые варианты использования IIFE в Javascript:

я. Вы можете использовать IIFE для предотвращения загрязнения глобального пространства имен.

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

II. Также можно использовать IIFE для выполнения асинхронной функции.

Даже старые браузеры и среды выполнения JavaScript, которые не имеют await верхнего уровня, могут использовать await и for-await с асинхронным IIFE.

5. Конструктор функций:

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

let sum = new Function(
"a",
"b",
"return a +b"
);

sum(2,3)

Это сводка различных подходов к определению функции в JavaScript. Удачного взлома =)