В примерах этой книги результаты вывода показаны в комментариях:
var x = 30;
console.log("the value of x is", x);
// → the value of x is 30
Хотя в именах переменных нельзя использовать точку – она, очевидно, содержится в названии console.log
. Это оттого, что console.log
– не простая переменная. Это выражение, возвращающее свойство log
переменной console
. Мы поговорим об этом в главе 4.
Возвращаемые значения
Показ диалогового окна или вывод текста на экран – это побочный эффект. Множество функций полезны оттого, что они производят эти эффекты. Функции также могут производить значения, и в этом случае им не нужен побочный эффект для того, чтобы быть полезной. К примеру, функция Math.max
принимает любое количество переменных и возвращает значение самой большой:
console.log(Math.max(2, 4));
// → 4
Когда функция производит значение, говорят, что она возвращает значение. Всё, что производит значение – это выражение, то есть вызовы функций можно использовать внутри сложных выражений. К примеру, возвращаемое функцией Math.min
(противоположность Math.max) значение используется как один из аргументов оператора сложения:
console.log(Math.min(2, 4) + 100);
// → 102
В следующей главе описано, как писать собственные функции.
prompt и confirm
Окружение браузера содержит другие функции, кроме alert
, которые показывают всплывающие окна. Можно вызвать окно с вопросом и кнопками OK/Cancel при помощи функции confirm
. Она возвращает булевское значение – true
, если нажато OK, и false
, если нажато Cancel.
confirm("Ну что, поехали?");
Функцию prompt
можно использовать, чтобы задать открытый вопрос. Первый аргумент – вопрос, второй – текст, с которого пользователь начинает. В диалоговое окно можно вписать строку текста, и функция вернёт его в виде строки.
prompt("Расскажи мне всё, что знаешь.", "...");
Эти функции нечасто используют, потому что нельзя изменять внешний вид этих окон — но они могут пригодиться для экспериментальных программ.
Управление порядком выполнения программы
Когда в программе больше одной инструкции, они выполняются сверху вниз. В этом примере у программы две инструкции. Первая спрашивает число, вторая, выполняемая следом, показывает его квадрат.
var theNumber = Number(prompt("Выбери число", ""));
alert("Твоё число – квадратный корень из " + theNumber * theNumber);
Функция Number
преобразовывает величину в число. Нам это нужно, потому что prompt
возвращает строку. Есть сходные функции String
и Boolean
, преобразующие величины в соответствующие типы.
Простая схема прямого порядка исполнения программы:
Условное выполнение
Выполнять инструкции по порядку – не единственная возможность. В качестве альтернативы существует условное выполнение, где мы выбираем из двух возможных путей, основываясь на булевской величине:
Условное выполнение записывается при помощи ключевого слова if
. В простом случае нам нужно, чтобы некий код был выполнен, только если выполняется некое условие. К примеру, в предыдущей программе мы можем считать квадрат, только если было введено именно число.
var theNumber = prompt("Выбери число ", "");
if (!isNaN(theNumber))
alert("Твоё число – квадратный корень из " + theNumber * theNumber);
Теперь, введя «сыр», вы не получите вывод.
Ключевое слово if
выполняет или пропускает инструкцию, в зависимости от значения булевого выражения. Это выражение записывается после if
в скобках, и за ним идёт нужная инструкция.
Функция isNaN
– стандартная функция JavaScript, которая возвращает true
, только если её аргумент – NaN
(не число). Функция Number
возвращает NaN
, если задать ей строку, которая не представляет собой допустимое число. В результате, условие звучит так: «выполнить, если только theNumber
не является не-числом».
Часто нужно написать код не только для случая, когда выражение истинно, но и для случая, когда оно ложно. Путь с вариантами – это вторая стрелочка диаграммы. Ключевое слово else
используется вместе с if
для создания двух раздельных путей выполнения.