4. Основы JavaScript


4.12. Функции

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

function имяФункции (арг0, apr1, aprN) {
инструкции
}

Пример функции:

function sayHi (name, message) {
alert ("Здравствуйте " + name + ", " + message);
}

После определения функции ее можно вызывать по имени, указывая в скобках после него аргументы, разделенные запятыми. Например, функция sayHi () вызывается так:

sayHi ("Николай", "Как дела?");

В результате в окне оповещения будет выведена строка "Здравствуйте Николай, Как дела?", составленная из приветствия и аргументов name и message.

Для функций в ECMAScript можно не указывать, возвращают ли они значения. Из любой функции можно возвратить значение в любое время с помощью инструкции return, например:

function sum (num1, num2) {
return num1 + num2;
}

Эта функция суммирует два значения и возвращает результат. Обратите внимание, что кроме инструкции return нет никакого специального объявления о том, что функция возвращает значение. Эту функцию можно вызвать следующим образом:

var result = sum (5, 10);

Помните, что при достижении инструкции return функция сразу завершается. Никакой код после return никогда не выполняется, например:

function sum(num1, num2) {
return num1 + num2;
alert ("Hello world!"); // никогда не выполняется

}

В этом примере оповещение никогда не появится, потому что вызов alert расположен после return.

Функция может содержать несколько инструкций return:

function diff (num1, num2) {
if (num1 < num2) {
return num2 – num1;
}
else {
return num1 – num2;
}

}

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

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

function sayHi (name, message) {
return;
alert ("Здравствуйте " + name + "t " + message); // никогда не вызывается

}

Рекомендуется либо возвращать значение из функции всегда, либо не возвращать никогда. Функцию, которая возвращает значение иногда, труднее понять, особенно на этапе отладки.