pickRandomWord(randomWords);
"Цветок"
При этом нашу функцию можно использовать с любым массивом.
Например, получить случайное имя из массива имен:
pickRandomWord(["Чарли", "Радж", "Николь", "Кейт", "Сэнди"]);
"Радж"
Генератор случайных дразнилок
Теперь давайте перепишем генератор дразнилок, используя нашу функ-
цию для выбора случайных слов. Для начала вспомним, как выглядел
код из третьей главы:
var randomBodyParts = ["глаз", "нос", "череп"];
var randomAdjectives = ["вонючая", "унылая", "дурацкая"];
var randomWords = ["муха", "выдра", "дубина", "мартышка", "крыса"];
// Выбор случайной части тела из массива randomBodyParts:
var randomBodyPart = randomBodyParts[Math.floor(Math.random() * 3)];
// Выбор случайного прилагательного из массива randomAdjectives:
var randomAdjective = randomAdjectives[Math.floor(Math.random() * 3)];
// Выбор случайного слова из массива randomWords:
var randomWord = randomWords[Math.floor(Math.random() * 5)];
134 Часть I. Основы
// Соединяем случайные строки в предложение:
var randomInsult = "У тебя " + randomBodyPart + " словно " +
randomAdjective + " " + randomWord + "!!!";
randomInsult;
"У тебя нос словно дурацкая выдра!!!"
Обратите внимание — конструкция words[Math.fl oor(Math.
random() * length)] повторяется здесь несколько раз. Воспользовав-
шись функцией pickRandomWord, можно переписать программу таким
образом:
var randomBodyParts = ["глаз", "нос", "череп"];
var randomAdjectives = ["вонючая", "унылая", "дурацкая"];
var randomWords = ["муха", "выдра", "дубина", "мартышка", "крыса"];
// Соединяем случайные строки в предложение:
var randomString = "У тебя " + pickRandomWord(randomBodyParts) +
" словно " + pickRandomWord(randomAdjectives) +
" " + pickRandomWord(randomWords) + "!!!";
randomString;
"У тебя нос словно дурацкая выдра!!!"
Этот код отличается от прежнего двумя моментами.
Во-первых, мы использовали функцию pickRandomWord
для выбора случайного слова из массива вместо того, чтобы
каждый раз писать words[Math.fl oor(Math.random() *
length)]. А во-вторых, вместо того чтобы сохранять каждое
случайное слово в переменной перед тем, как добавлять его
к итоговой строке, мы сразу объединяем возвращаемые
из функции значения, формируя таким образом строку.
Вызов функции можно рассматривать как значение, кото-
рое эта функция возвращает, поэтому все, что мы тут делаем, — это объ-
единяем строки. Как видите, новую версию программы гораздо легче
читать. Да и писать ее тоже было легче, поскольку часть повторяющегося
кода мы вынесли в функцию.
Делаем генератор дразнилок функцией
Можно еще усовершенствовать наш генератор случайных дразнилок,
сделав его функцией, которая возвращает дразнилки:
Generate ran-
var generateRandomInsult = function () {
dom insult —
var randomBodyParts = ["глаз", "нос", "череп"];
сгенерировать
var randomAdjectives = ["вонючая", "унылая", "дурацкая"];
случайную
var randomWords = ["муха", "выдра", "дубина", "мартышка", "крыса"]; дразнилку
8. Функции 135
// Соединяем случайные строки в предложение:
var randomString = "У тебя " + pickRandomWord(randomBodyParts) +
" словно " + pickRandomWord(randomAdjectives) +
" " + pickRandomWord(randomWords) + "!!!";
return randomString;
};
generateRandomInsult();
"У тебя череп словно унылая дубина!!!"
generateRandomInsult();
"У тебя нос словно дурацкая мартышка!!!"
generateRandomInsult();
"У тебя глаз словно вонючая муха!!!"
Наша новая функция generateRandomInsult представляет
собой все тот же код, помещенный в тело функции без аргументов.
Мы добавили лишь одну строку, помеченную , где мы возвращаем
сгенерированную строку randomString. Трижды вызвав функцию
generateRandomInsult, мы каждый раз получали новую дразнилку.
Теперь весь код находится в функции, и это означает, что для гене-
рации дразнилки мы можем просто вызывать эту функцию, а не копи-
ровать в консоль один и тот же код каждый раз, когда понадобится кого-
нибудь подразнить.
Ранний выход из функции по return
Как только JavaScript, выполняя код
функции, встречает оператор return,
он завершает функцию, даже если после
return еще остался какой-нибудь код.
Оператор return часто используют,
чтобы выйти из функции в самом начале,
если какие-нибудь из переданных аргу-
ментов имеют некорректные значения —
то есть если с такими аргументами
функция не сможет правильно работать.
Например, следующая функция воз-
вращает строку с информацией о пятой
букве вашего имени. Если в имени, пере-
данном в аргументе name, меньше пяти
букв, будет выполнен return, чтобы сразу же выйти из функции. При
этом оператор return в конце функции (тот, что возвращает сообщение
о пятой букве) так и не будет выполнен.
136 Часть I. Основы
var fifthLetter = function (name) {
if (name.length < 5) {
return;
}
return "Пятая буква вашего имени: " + name[4] + ".";
Читать дальше
Конец ознакомительного отрывка
Купить книгу