Можно сказать, что функция JavaScript представляет собой блок повторно используемого кода, созданный для выполнения некоторых задач. Эта функция запускается, когда какое-то событие инициирует или вызывает ее.
Цель этой статьи — обсудить функции JavaScript и основные формы, в которых они могут быть определены.
Способы определения функции в JavaScript:
- Объявление функции:
В объявлении функции синтаксис выглядит следующим образом:
а. функция ключевое слово
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. Удачного взлома =)