Марейн Хавербеке - Выразительный JavaScript
- Название:Выразительный JavaScript
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:978-1593275846
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Марейн Хавербеке - Выразительный JavaScript краткое содержание
В процессе чтения вы познакомитесь с основами программирования и, в частности, языка JavaScript, а также выполните несколько небольших проектов. Один из самых интересных проектов — создание своего языка программирования.
Выразительный JavaScript - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Переменная number
показывает, как переменная может отслеживать прогресс программы. При каждом повторении цикла number
увеличивается на 2. Перед каждым повторением оно сравнивается с 12, чтобы понять, сделала ли программа всё, что требовалось.
Для примера более полезной работы мы можем написать программу вычисления 2 в 10 степени. Мы используем две переменные: одну для слежения за результатом, а вторую – для подсчёта количества умножений. Цикл проверяет, достигла ли вторая переменная 10, и затем обновляет обе.
var result = 1;
var counter = 0;
while (counter < 10) {
result = result * 2;
counter = counter + 1;
}
console.log(result);
// → 1024
Можно начинать counter
с 1 и проверять его на <=10
, но по причинам, которые станут ясны далее, всегда лучше начинать счётчики с 0.
Цикл do похож на цикл while
. Отличается только в одном: цикл do
всегда выполняет тело хотя бы один раз, а проверяет условие после первого выполнения. Поэтому и тестируемое выражение записывают после тела цикла:
do {
var name = prompt("Who are you?");
} while (!name);
console.log(name);
Эта программа заставляет ввести имя. Она спрашивает его снова и снова, пока не получит что-то кроме пустой строки. Добавление " !
" превращает значение в булевское и затем применяет логическое отрицание, а все строки, кроме пустой, преобразуются в булевское true
.
Вы, наверно, заметили пробелы перед некоторыми инструкциями. В JavaScript это не обязательно – программа отработает и без них. Даже переводы строк не обязательно делать. Можно написать программу в одну строку. Роль пробелов в блоках – отделять их от остальной программы. В сложном коде, где в блоках встречаются другие блоки, может быть сложно разглядеть, где кончается один и начинается другой. Правильно отделяя их пробелами вы приводите в соответствие внешний вид кода и его блоки. Я люблю отделять каждый блок двумя пробелами, но вкусы различаются – некоторые используют четыре, некоторые – табуляцию. Чем больше пробелов использовать, тем заметнее отступ, но тем быстрее вложенные блоки убегают за правый край экрана.
Циклы for
Много циклов строятся по такому шаблону, как в примере. Создаётся переменная-счётчик, потом идёт цикл while
, где проверочное выражение обычно проверяет, не достигли ли мы какой-нибудь границы. В конце тела цикла счётчик обновляется.
Поскольку это такой частый случай, в JavaScript есть вариант покороче, цикл for
.
for (var number = 0; number <= 12; number = number + 2)
console.log(number);
// → 0
// → 2
// … и т.д.
Эта программа эквивалентна предыдущей. Только теперь все инструкции, относящиеся к отслеживанию состояния цикла, сгруппированы.
Скобки после for
содержат две точки с запятой, разделяя инструкцию на три части. Первая инициализирует цикл, обычно задавая начальное значение переменной. Вторая – выражение проверки необходимости продолжения цикла. Третья – обновляет состояние после каждого прохода. В большинстве случаев такая запись более короткая и понятная, чем while
.
Вычисляем 2 10при помощи for
:
var result = 1;
for (var counter = 0; counter < 10; counter = counter + 1)
result = result * 2;
console.log(result);
// → 1024
Хотя я не писал фигурных скобок, я отделяю тело цикла пробелами.
Выход из цикла
Дождаться, пока условие цикла не станет ложным – не единственный способ закончить цикл. Специальная инструкция break
приводит к немедленному выходу из цикла.
В следующем примере мы покидаем цикл, когда находим число, большее 20 и делящееся на 7 без остатка.
for (var current = 20; ; current++) {
if (current % 7 == 0)
break;
}
console.log(current);
// → 21
Конструкция for
не имеет проверочной части – поэтому цикл не остановится, пока не сработает инструкция break
.
Если вы не укажете эту инструкцию, или случайно напишете условие, которое всегда выполняется, программа зависнет в бесконечном цикле и никогда не закончит работу – обычно это плохо.
Если вы сделаете бесконечный цикл, обычно через несколько секунд среда исполнения предложит вам прервать его. Если нет, вам придётся закрыть закладку, или даже весь браузер.
Ключевое слово continue
также влияет на исполнение цикла. Когда это слово встречается в цикле, он немедленно переходит на следующую итерацию.
Короткое обновление переменных
Особенно часто в циклах программе нужно обновить переменную, основываясь на её предыдущем состоянии.
counter = counter + 1;
В JavaScript есть для этого короткая запись:
counter += 1;
Подобные записи работают для многих других операторов, к примеру result *= 2
для удвоения, или counter -= 1
для обратного отсчёта.
Это позволяет нам сократить программу вывода чётных чисел:
for (var number = 0; number <= 12; number += 2)
console.log(number);
Для counter += 1
и counter -= 1
есть ещё более короткие записи: counter++
и counter--
.
Работаем с переменными при помощи switch
Часто код выглядит так:
if (variable == "value1") action1();
else if (variable == "value2") action2();
else if (variable == "value3") action3();
else defaultAction();
Существует конструкция под названием switch
, которая упрощает подобную запись. К сожалению, синтаксис JavaScript (заимствованный из языков C и Java)в этом случае довольно странный – часто цепочка if
/ else
выглядит лучше. Пример:
switch (prompt("Как погодка?")) {
case "дождь":
console.log("Не забудь зонт.");
break;
case "снег":
console.log("Блин, мы в России!");
break;
case "солнечно":
console.log("Оденься полегче.");
case "облачно":
console.log("Иди гуляй.");
break;
default:
console.log("Непонятная погода!");
break;
}
В блок switch
можно поместить любое количество меток case
. Программа перепрыгивает на метку, соответствующую значению переменной в switch
, или на метку default
, если подходящих меток не найдено. После этого инструкции исполняются до первой инструкции break
– даже если мы уже прошли другую метку. Иногда это можно использовать для исполнения одного и того же кода в разных случаях (в обоих случаях «солнечно» и «облачно» программа порекомендует пойти погулять). Однако, очень легко забыть запись break
, что приведёт к выполнению нежелательного участка кода.
Регистр имён
Имена переменных не могут содержать пробелы, однако часто удобно использовать несколько слов для понятного описания переменной. Вы можете выбирать из нескольких вариантов:
Читать дальшеИнтервал:
Закладка: