Функции в JavaScript

Часто при написании программы некоторые блоки кода нужно выполнить несколько раз. Для этого используются функции. Есть стандартные, например для извлечения квадратного корня можно воспользоваться Math.sqrt(x), а так же можно написать свои (пользовательские).

Основные причины использования

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

  • Если блок кода надо выполнить несколько раз.
  • Можно привязать к функциям какое-нибудь событие. Например, нажатие кнопки или срабатывание таймера.
  • Для улучшения читаемости кода. Большой блок кода можно разбить на небольшие блоки и оформить их в виде функций.

Объявление

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

Вот так выглядит функция в JavaScript:

function name(arg1, arg2, arg3) {
    // тело функции
    return result;
}

Здесь:

  • name – имя функции, объявляется после ключевого слово function. С его помощью мы её будем вызывать в дальнейшем.
  • arg1, arg2, arg3 – это аргументы. В данном случае их три. Но их может быть больше или их может совсем не быть
  • result – это возвращаемое значение. Если нужно возвращать какое либо значение, то воспользуемся ключевым словом return. Записанное после него значение (или выражение) будет возвращаться функцией. В случае выражения будет вначале рассчитан его результат, а потом он будет возвращен. В нашем случае возвращается значение переменной result  Соответственно, эта переменная должна быть объявлена до этого, например в теле функции и ей должно присвоено какое-либо значение.
  • Тело функции – здесь производятся различные операции, которые нам необходимы. Ключевое слово return тоже относится к телу.

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

Можно использовать return без параметров. В таком случае завершится выполнение и будет возвращено значение undefined.

Кстати, если в теле не будет использовано return вовсе, то возвращаемое значение будет также undefined.

Вот пример создания:

function sum(a1, a2) {
    return a1 + a2;
}

let res = sum(4, 5);
alert(res);

Здесь пользовательская функция sum имеет два аргумента и возвращает их сумму. Мы её вызываем со значениями аргументов  4 и 5. Возвращаемое значение записываем в переменную res, а затем выводим сообщение с помощью стандартной функции alert.

Вызов

Как видно из примера описанного выше, для вызова достаточно воспользоваться именем, которое мы использовали при создании. В круглых скобках перечисляем аргументы.

Мы можем не указывать все аргументы. В этом случае значение их будет undefined. Если мы хотим, чтобы по умолчанию у аргументов было другое значение, то его нужно указать при объявлении, используя оператор присвоения.

Вот пример вызова функции JavaScript, где по умолчанию задан один из параметров:

function fun1(a1, a2=7) {
    let result = a1 + a2;
    return result;
}

let res1 = fun1(2);
console.log(res1); // вернёт 9, так как 2+7=9
let res2 = fun1(3, 4);
console.log(res2); // вернёт 7, так как 3+4=7

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

Во втором случае оба аргумента заданы, поэтому с помощью console.log будет выведена в консоль сумма 3 и 4.