};
В строке мы проверяем длину переданного имени — уж не короче
ли оно пяти символов? Если это так, в строке мы выполняем return,
чтобы незамедлительно выйти из функции.
Давайте попробуем эту функцию в деле.
Fifth letter —
fifthLetter("Николай");
пятая буква
"Пятая буква вашего имени: л."
В имени Николай больше пяти букв, так что функция fi fthLetter
благополучно завершается, вернув пятую букву имени Николай , то
есть л . Попробуем вызвать ее еще раз с именем покороче:
fifthLetter("Ник");
undefined
Когда мы вызвали fi fthLetter для имени Ник , функция распознала,
что имя недостаточно длинное, и сразу завершилась, выполнив опера-
тор return в строке . Поскольку никакого значения после
этого return не указано, функция вернула undefi ned.
Многократное использование return
вместо конструкции if... else
Можно многократно использовать return внутри разных
конструкций if, чтобы возвращать из функции разные зна-
чения в зависимости от входных данных. Предположим, вы
пишете игру, в которой игроки награждаются медалями
согласно набранным очкам. Счету меньше трех очков соот-
ветствует бронзовая медаль, счету от трех до шести — серебряная,
а счету от семи и выше — золотая.
8. Функции 137
Medal
var medalForScore = function (score) {
for score —
if (score < 3) {
медаль за очки
return "Бронзовая";
}
Score — счет,
очко (очки)
if (score < 7) {
return "Серебряная";
}
return "Золотая";
};
В строке мы возвращаем значение "Бронзовая" и выходим
из функции, если счет меньше трех очков. Если мы достигли строки ,
значит, счет как минимум равен трем очкам, поскольку, будь он меньше
трех, мы бы уже вышли из функции (выполнив return в первом опера-
торе if). И наконец, если мы достигли строки , значит, на счету как
минимум семь очков, проверять больше нечего и можно спокойно вер-
нуть значение "Золотая".
Хотя мы проверяем здесь несколько условий, необходимости исполь-
зовать цепочку конструкций if... else нет. Мы используем if... else,
когда хотим убедиться, что будет выбран лишь один из вариантов.
Однако если в каждом варианте выполняется return, это также гаран-
тирует однозначный выбор (поскольку выйти из функции можно лишь
один раз).
СОКРАЩЕННА Я ЗА ПИСЬ ПРИ СОЗ Д АНИИ ФУ НКЦИЙ
Есть длинный и короткий способы записи функций. Я использую длинную
запись, поскольку она наглядно демонстрирует, что функция хранится
в переменной. Тем не менее вам стоит знать и о короткой записи, поскольку
ее используют многие JavaScript-разработчики. Возможно, и вы сами,
достаточно поработав с функциями, предпочтете короткую запись.
Вот пример длинной записи:
var double = function (number) {
return number * 2;
};
Короткая запись той же функции выглядит так:
function double(number) {
return number * 2;
}
138 Часть I. Основы
Как видите, при длинной записи мы явно создаем переменную и сохра-
няем в ней функцию, так что имя double записывается прежде ключевого
слова function. Напротив, при короткой записи сначала идет ключевое
слово function, а затем название функции. В этом случае JavaScript соз-
дает переменную double неявным образом.
На техническом сленге длинная запись называется функциональным
выражением , а короткая — объявлением функции .
Что мы узнали
Функции позволяют повторно использовать фрагменты кода. Они могут
работать по-разному в зависимости от переданных аргументов и могут
возвращать значение в то место кода, откуда они были вызваны. Также
функции дают возможность называть фрагменты кода понятными име-
нами, чтобы, глядя на название, мы могли сразу понять, что функция
делает.
В следующей главе мы узнаем, как писать JavaScript-код для работы
с HTML-элементами.
8. Функции 139
УПРА ЖНЕНИЯ
Выполните эти упражнения, чтобы попрактиковаться в исполь-
зовании функций.
#1. Математические расчеты и функции
Add —
Создайте две функции, add и multiply; пусть каждая принимает
прибавить
по два аргумента. Функция add должна складывать аргументы
Multiply —
и возвращать результат, а функция multiply — перемножать
умножить
аргументы.
С помощью только этих двух функций вычислите следующее
несложное выражение:
36325 * 9824 + 777
#2. Совпадают ли массивы?
Are arrays
Напишите функцию areArraysSame, которая принимает два
same —
массива с числами в качестве аргументов. Она должна возвра-
одинаковы ли
щать true, если эти массивы одинаковые (то есть содержат одни
Читать дальше
Конец ознакомительного отрывка
Купить книгу