лица», которую мы написали в этой главе.
#1. Больше слов
Добавьте новые слова в массив words. Не забывайте, что все
буквы должны быть строчными.
#2. Заглавные буквы
Если игрок введет заглавную букву, она не совпадет с такой же
строчной буквой в загаданном слове. Эту вероятность можно
учесть, преобразовав введенную букву в строчный регистр.
(Подсказка: для этого подойдет метод toLowerCase.)
#3. Ограничение по ходам
Сейчас наша «Виселица» позволяет угадывать буквы сколько
угодно раз, до победного конца. Добавьте в программу пере-
менную для учета попыток и завершайте игру, если игрок
израсходовал все попытки. (Подсказка: проверяйте значение
этой переменной в том же цикле while, где проверяется усло-
вие remainingLetters > 0, а с помощью операции && можно
убедиться, что сразу два логических условия дают true —
см. вторую главу.)
#4. Исправьте ошибку
В игре есть ошибка: если вы будете снова и снова вводить одну и ту
же букву, которая есть в загаданном слове, remainingLetters
будет снова и снова уменьшаться. Постарайтесь это исправить!
(Подсказка: можно добавить проверку еще одного условия — что
в соответствующем элементе answerArray все еще стоит знак
подчеркивания. Если там другой символ, значит, эта буква уже
угадана.)
8
ФУ Н К Ц И И
Функции — это механизм для многократного использования частей кода.
Они позволяют запускать один и тот же код из разных мест программы
без необходимости его копировать. Кроме того, если вы «спрячете» слож-
ные фрагменты кода внутри функций, вам будет легче сосредоточиться
на проектировании программы — так вы будете налаживать взаимо-
действие между функциями, а не барахтаться в мелких деталях, из кото-
рых состоит код этих фрагментов. Организация кода в виде небольших,
легко контролируемых частей позволяет видеть общую картину и думать
о строении программы на более высоком уровне.
Функции очень удобны, когда нужно многократно выполнять в про-
грамме некие расчеты или другие действия. Мы уже пользовались гото-
выми функциями, такими как Math.random, Math.fl oor, alert, prompt
и confi rm. А в этой главе мы научимся создавать свои функции.
Базовое устройство функции
На рис. 8.1 показано строение функции. Код внутри фигурных скобок
называется телом функции — аналогично циклам, где код в фигурных
скобках зовется телом цикла .
function () {
console.log("Делаем что-то");
}
Тело функции записывается
в фигурных скобках
Рис. 8.1. Синтаксис создания функции
126

Создаем простую функцию
Давайте создадим функцию, которая печатает фразу «Привет, мир!».
Введите в консоли браузера следующий код. Чтобы перейти к новой строке
без выполнения уже введенных команд, используйте SHIFT-ENTER.
Our first
var ourFirstFunction = function () {
function —
console.log("Привет, мир!");
наша первая
};
функция
Этот код создает новую функцию, сохраняя ее в переменной
ourFirstFunction.
Вызов функции
Чтобы запустить код функции (то есть ее тело), нужно эту функцию
вызвать . Для этого укажите ее имя, а следом — открывающую и закры-
вающую скобки, вот так:
ourFirstFunction();
Привет, мир!
При вызове ourFirstFunction выполняется ее тело,
то есть команда console.log("Привет, мир!");, и текст,
который мы таким образом выводим, появляется в консоли
на следующей строке: "Привет, мир!"
Однако, вызвав эту функцию из браузера, можно заме-
тить в консоли еще одну строчку — с маленькой, указываю-
щей влево стрелкой, как на рис. 8.2. Это значение, которое
возвращает функция.
Рис. 8.2. Вызов функции, возвращаемое значение которой
не определено
Возвращаемое значение — это значение, которое функция выдает
наружу, чтобы потом его можно было использовать где угодно в про-
грамме. В данном случае это undefi ned, поскольку мы не указывали
возвращаемое значение в теле функции, мы лишь дали команду вывести
127
текст в консоль. Функция всегда будет возвращать undefi ned, если в теле
функции нет указания вернуть что-нибудь другое. (В разделе «Возврат
значения из функции» на с. 131 мы выясним, как это можно сделать.)
Читать дальше
Конец ознакомительного отрывка
Купить книгу