Возвращаемые значения
Отображение диалогового окна или запись текста на экран является побочным эффектом. Многие функции полезны из-за побочных эффектов, которые они производят. Функции могут также создавать значения, и в этом случае им не нужно иметь побочный эффект, чтобы быть полезным. Например, функция Math.max принимает любое количество числовых аргументов и возвращает наибольшее.
console.log (Math.max (2, 4));
// → 4
Когда функция создает значение, говорят, что оно возвращает это значение. Все, что создает значение, является выражением в JavaScript, что означает, что вызовы функций могут использоваться в больших выражениях. Здесь вызов Math.min, который противоположен Math.max, используется как часть выражения плюс:
console.log (Math.min (2, 4) + 100);
// → 102
Контроль потока
Когда ваша программа содержит более одного оператора, операторы выполняются, как если бы они были историей, сверху вниз. В этом примере программы есть два утверждения. Первый запрашивает у пользователя число, а второй, который выполняется после первого, показывает квадрат этого числа.
let theNumber = Number ( prompt («Выберите номер»));
console.log («Ваш номер - квадратный корень из» + theNumber * theNumber);
Функция Number преобразует значение в число. Нам нужно это преобразование, потому что результатом запроса является строковое значение, а нам нужно число. Существуют похожие функции, называемые String и Boolean, которые преобразуют значения в эти типы.
Вот довольно тривиальное схематическое представление линейного потока управления:
Условное исполнение
Не все программы являются прямыми дорогами. Например, мы можем захотеть создать ветвящуюся дорогу, где программа выбирает правильную ветвь в зависимости от ситуации. Это называется условным исполнением.
Условное выполнение создается с помощью ключевого слова if в JavaScript. В простом случае мы хотим, чтобы какой-то код выполнялся тогда и только тогда, когда выполняется определенное условие. Например, мы можем захотеть показать квадрат ввода только в том случае, если на самом деле это число.
let theNumber = Number (prompt («Выберите номер»));
if (! Number.isNaN (theNumber)) {
console.log («Ваш номер - квадратный корень из» + theNumber * theNumber);
}
С этой модификацией, если вы введете «попугай», вывод не отображается.
Ключевое слово if выполняет или пропускает оператор в зависимости от значения логического выражения. Решающее выражение записывается после ключевого слова в скобках, за которым следует инструкция для выполнения.
Функция Number.isNaN - это стандартная функция JavaScript, которая возвращает true только в том случае, если задан аргумент NaN. Функция Number возвращает значение NaN, когда вы даете ей строку, которая не представляет действительное число. Таким образом, условие переводится как «если theNumber не является числом, делайте это».
Оператор после if в этом примере заключен в фигурные скобки ({и}). Скобки можно использовать для группировки любого количества операторов в один оператор, называемый блоком. Вы могли бы также опустить их в этом случае, так как они содержат только один оператор, но чтобы избежать необходимости думать о том, нужны ли они, большинство программистов JavaScript используют их в каждом заключенном в оболочку выражении, подобном этому. Мы в основном будем придерживаться этого соглашения в этой книге, за исключением случайных однострочных.
if (1 + 1 == 2) console.log ("Это правда");
// → Это правда
Вы часто будете иметь не только код, который выполняется, когда условие выполняется, но также и код, который обрабатывает другой случай. Этот альтернативный путь представлен второй стрелкой на диаграмме. Вы можете использовать ключевое слово else вместе с if для создания двух отдельных альтернативных путей выполнения.
let theNumber = Number (prompt («Выберите номер»));
if (! Number.isNaN (theNumber)) {
console.log («Ваш номер - квадратный корень из» + theNumber * theNumber);
} else{
console.log («Привет. Почему ты не дал мне номер?»);
}
Если у вас есть более двух путей на выбор, вы можете «связать» несколько пар if / else вместе. Вот пример:
let num = Number (подсказка («Выберите номер»));
if (num <10) {
console.log ( "Small");
} else if (num <100) {
console.log ( "Medium");
} else {
console.log ( "Large");
}
Программа сначала проверит, не меньше ли num 10. Если это так, она выбирает эту ветку, показывает «Small» и выполняет. Если это не так, он принимает ветвь else, которая сама содержит секунду if. Если второе условие (<100) выполняется, это означает, что число находится в диапазоне от 10 до 100, и отображается «Среднее». Если это не так, выбирается вторая и последняя ветвь.
Схема для этой программы выглядит примерно так: