Пользовательские функции

Функция — это фрагмент кода JavaScript, который можно вызвать из любого места программы. В предыдущих главах мы уже не один раз использовали встроенные функции. Например, с помощью функции parseInt() преобразовывали строку в целое число. В этой главе мы рассмотрим создание пользовательских функций, которые позволят уменьшить избыточность программного кода и повысить его структурированность.

Создание функции и ее вызов

Функция описывается с помощью ключевого слова function по следующей схеме:

function <Имя функции>([<Параметры через запятую>]) {
   <Тело функции>
   [return[ <Возвращаемое значение>];]
}

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

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

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

Пример функции без параметров:

function showOK() {
   console.log('Сообщение при удачно выполненной операции');
}

Пример функции с одним параметром:

function showMessage(msg) {
   console.log(msg);
}

Пример функции с двумя параметрами, которая возвращает сумму двух переменных:

function sum(x, y) {
   let z = x + y;
   return z;
}

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

showOK(); // Сообщение при удачно выполненной операции
showMessage('Сообщение'); // Сообщение
let n = sum(5, 2);        // Переменной n будет присвоено значение 7
showMessage(`n = ${n}`);  // n = 7

Переданные значения присваиваются переменным, расположенным в той же позиции в определении функции. Так при использовании функции sum() переменной x будет присвоено значение 5, а переменной y — значение 2. Результат выполнения функции присваивается переменной n.

В качестве возвращаемого значения в операторе return можно указывать не только имя переменной, но и выражение:

function sum(x, y) {
   return x + y;
}

Если нужно вернуть несколько значений, то значения указываются через запятую внутри квадратных скобок:

function func(x) {
   return [x ** 2, x ** 3];
}
let [a, b] = func(5);
console.log( a + ' ' + b );   // 25 125

Инструкции, указанные после оператора return, никогда не будут выполнены:

function sum(x, y) {
   return x + y;
   console.log('Сообщение'); // Эта инструкция никогда не будет выполнена
}

В окне консоли Web-браузера в этом случае отобразится предупреждающее сообщение "unreachable code after return statement".

Имя переменной, передающей значение функции, может не совпадать с именем переменной внутри функции:

function sum(x, y) {
   return x + y;
}
let var1 = 5, var2 = 2, var3;
var3 = sum(var1, var2);

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

function test() {
   console.log('Это функция test()');
}
let func;
func = test; // Присваиваем ссылку на функцию
func();      // Вызываем функцию test() через переменную func
console.log(typeof test); // function

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

(function test() {
   console.log('Это функция test()');
})();
// Это функция test()
// test(); // Ошибка функция здесь не видна
// ReferenceError: test is not defined

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

Учебник по Node.js и JavaScript
Учебник по JavaScript (Node.js) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов