Функциональное программирование

Функции

Последнее обновление: 20.08.2023

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

function имя_функции(параметры){

    // Инструкции
}

Определение функции начинается с ключевого слова function, после которого следует имя функции. Наименование функции подчиняется тем же правилам, что и наименование переменной: оно может содержать только цифры, буквы, символы подчеркивания и доллара ($) и должно начинаться с буквы, символа подчеркивания или доллара.

После имени функции в скобках идет перечисление параметров. Даже если параметров у функции нет, то просто идут пустые скобки. Затем в фигурных скобках идет тело функции, содержащее набор инструкций.

Определим простейшую функцию:

function hello(){

    console.log("Hello Metanit.com");
}

Данная функция называется hello(). Она не принимает никаких параметров и все, что она делает, это выводит на консоль браузера строку "Hello Metanit.com".

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

имя_функции(параметры)

При вызове после имени вызываемой функции в скобках указывается список параметров. Если функция не имеет параметров, то указывются пустые скобки.

Например, определим и вызовем простейшую функцию:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
	<title>METANIT.COM</title>
</head>
<body>
<script>
// определение функции
function hello(){

    console.log("Hello Metanit.com");
}
// вызов функции
hello();
</script>
</body>
</html>

В данном случае функция hello не принимает параметров, поэтому при ее вызове указываются пустые скобки:

hello();
Функции в JavaScript

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

// определение функции
function hello(){
    console.log("Hello Metanit.com");
}
// вызов функции
hello();
hello();
hello();

Переменные и константы в качестве функций

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

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
	<title>METANIT.COM</title>
</head>
<body>
<script>
// определение функции
function hello(){
    console.log("Hello from Metanit.com");
}
// передача константе message ссылки на функцию hello
const message = hello;
message();	// вызываем функцию, ссылка на которую хранится в константе message
</script>
</body>
</html>

Присвоив константе или переменной функцию:

const message = hello;

затем мы можем по имени константы/переменной вызывать эту функцию:

message();

Также мы можем динамически менять функции, которые хранятся в переменной:

function goodMorning(){
    console.log("Доброе утро");
}
function goodEvening(){
    console.log("Добрый вечер");
}
let message = goodMorning;		// присваиваем переменной message функцию goodMorning
message(); 		// Доброе утро
message = goodEvening;			// меняем функцию в переменной message
message(); 		// Добрый вечер

Функции-выражения и анонимные функции

Необязательно давать функциям определенное имя. Можно использовать анонимные функции. Такие функции при определении присваиваются константе или переменной. Эти функции еще называют функции-выражения (function expression):

const message = function(){

	console.log("Hello JavaScript");
}
message();

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

Локальные функции

JavaScript позволяет определять локальные функции - функции внутри других функций. Локальные функции видно только в рамках внешней функции, в которой они определены. Например:

function print(){
    
    printHello();
    printHello();
    printHello();

    function printHello(){
        console.log("Hello");
    }
}
print();
printHello();   // Uncaught ReferenceError: printHello is not defined - локальную функцию можно вызвать только из ее окружающей функции

Здесь внутри функции print определена локальная функция printHello, которая просто выводит строку "Hello". И внутри функции print мы можем вызвать локальную функцию printHello, однако вне окружающей функции локальную функцию вызвать нельзя.

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

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850