Книга: HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов
Объявление функций
Объявление функций
Прежде чем функция будет использована где-то в Web-сценарии, ее нужно объявить. Функцию объявляют с помощью ключевого слова function:
function <имя функции>([<список параметров, разделенных запятыми>])
<тело функции>
Имя функции, как уже говорилось, должно быть уникально в пределах Web- страницы. Для имен функций действуют те же правила, что и для имен переменных.
Список параметров представляет собой набор переменных, в которые при вызове функции будут помещены значения переданных ей параметров. (О вызове функций будет рассказано далее.) Мы можем придумать для этих переменных любые имена — все равно они будут использованы только внутри тела функции. Это так называемые формальные параметры функции.
Список параметров функции помещают в круглые скобки и ставят после ее имени; сами параметры отделяют друг от друга запятыми. Если функция не требует параметров, следует указать пустые скобки — это обязательно.
В пределах тела функции над принятыми ею параметрами (если они есть) и другими данными выполняются некоторые действия и, возможно, вырабатывается результат. Оператор возврата return возвращает результат из функции в выражение, из которого она была вызвана:
return <переменная или выражение>;
Здесь переменная должна содержать возвращаемое значение, а выражение должно его вычислять.
Пример объявления функции:
function divide(a, b) {
var c;
c = a / b;
return c;
}
Данная функция принимает два параметра — a и b, — после чего делит a на b и возвращает частное от этого деления.
Эту функцию можно записать компактнее:
function divide(a, b) {
return a / b;
}
Или даже так, в одну строку:
function divide(a, b) { return a / b; }
JavaScript позволяет нам создавать так называемые необязательные параметры функций — параметры, которые при вызове можно не указывать, после чего они примут некоторое значение по умолчанию. Вот пример функции с необязательным параметром b, имеющим значение по умолчанию 2:
function divide(a, b) {
if (typeof(b) == "undefined") b = 2;
return a / b;
}
Понятно, что мы должны как-то выяснить, был ли при вызове функции указан параметр b. Для этого мы используем оператор получения типа typeof (он был описан ранее). Если параметр b не был указан, данный оператор вернет строку "undefined"; тогда мы создадим переменную с именем b, как и у необязательного параметра, и присвоим ей число 2 — значение этого параметра по умолчанию, — которое и будет использовано в теле функции. Если возвращенное оператором значение иное, значит, параметр b был указан при вызове, и мы используем значение, которое было передано с ним.