Содержание:
- Условные операторы языка javaScript
- Тернарный оператор javaScript
- Оператор переключения в javaScript - switch
- Циклические операторы языка javaScript - For
- Циклические операторы языка javaScript - While
- Цикл с постусловием do..while
- Циклические операторы языка javaScript - цикл For In
- Оператор обработки исключений в javaScript - try..catch
Условные операторы языка javaScript
В javaScript условие осуществляет оператор if
Рассмотрим синтаксис условного оператора:
Синтаксис:
if (условие) { // если истина operator1; operator2; } else { // если ложь operator3; operator4; }Пример:
let a = prompt('Введите наибольшую цифру в 8-й системе счисления'); if (a != 7) { // если истина alert( 'Неверно!' ); } else { // если ложь alert( 'Верно!' ); }
В качестве условия может использоваться логическое выражение или переменная.
{}
— это составной оператор, объединяющий несколько операторов в конструкции. Скобки можно опустить, если внутри конструкции только один оператор.Часть конструкции после служебного слова else
— необязательна.
В условии используются следующие операции отношений:
< |
Меньше |
> |
Больше |
<= |
Меньше либо равно |
>= |
В javascript больше или равно |
== |
Равно (сравнение) |
!= |
в javascript не равно |
=== |
Сравнение с учетом типа (идентичность) |
===
) требует совпадения типа и значения переменной, тогда как для равенства (==
) достаточно только совпадающих значений- если значения имеют разные типы, то они не идентичны;
- если значения являются числами, имеют одинаковые значения и не являются значениями
NaN
— они идентичны.
Для оператора равенства стоит использовать символ «==
»
//num1 == num2
Для оператора идентичности стоит использовать «===
»
//num1 === num2
Рассмотрим простой пример с использованием оператора языка javascript if
:
✍ Решение:
- Создайте веб-страницу с html-скелетом и тегом script.
- В коде для javascript инициализируйте переменную a методом prompt() — модального окна для ввода:
- Преобразуйте переменную в числовой тип:
- Введите условие проверки, выдав результат с помощью метода alert():
- Протестируйте сценарий в браузере.
let a = prompt("Введите число"); |
a = parseInt(a); |
if (a > 1) alert("а больше 1") else alert("а не больше 1"); |
if (a > 1) { alert("а больше 1") } else { alert("а не больше 1"); } |
- Каков синтаксис условного оператора if?
- В каких случаях можно опускать фигурные скобки {} в условном операторе?
1 2 3 4 | let a = prompt("Введите число 11", "0"); if (a = 11) document.write("Введенное значение верно."); } |
prompt()
).В зависимости от введенного возраста выдавать сообщение «Вы слишком молоды» (в случае введенного значения менее 20 лет) или «Вы нам подходите» (в случае введенного значения более или равного 20 годам).
Итоговое сообщение выводить с помощью метода
document. write()
.
Теперь рассмотрим используемые в javascript логические операторы для построения сложных (например, двойных) условий:
символ | смысл | пример |
---|---|---|
! |
в javascript отрицание НЕ | if (!x) |
&& |
в javascript И | if (x>1 && x<5) |
|| |
в javascript ИЛИ | if (x>1 || y>1) |
В большинстве языков программирования также как и в javascript используется так называемое "правило лжи". Рассмотрим пример:
let a=1; if (a) alert(a); |
Как в данном примере поступит интерпретатор? как будет проверять условие, состоящее просто из одной переменной? - По правилу лжи:
ЛОЖНО:
- Null значения
- Undefined
- NaN
- 0
- Пустая строка ("")
- false
Пример использования "правила лжи" со строковой переменной:
let s=""; if (s) alert("строка не пуста"); else alert("строка пуста"); |
prompt
). Если имя введено, то выводить "Привет, имя!". Если пользователь не ввел имя или щелкнул cancel
(значение null
) выводить "Привет, незнакомец!"
✍ Решение:
- Создайте веб-страницу с html-скелетом и тегом script.
- В коде для javascript инициализируйте переменную name методом prompt() — модального окна для ввода:
- Введите условный оператор для обработки щелчка по кнопке cancell и для пустого ввода:
- Для блока Иначе (else) организуйте вывод соответствующего сообщения со значением имени:
- Протестируйте сценарий в браузере.
let name = prompt("Введите число"); |
if (!name || name=="null") document.write("Привет, незнакомец!") |
!name
по правилу лжи означает, что строковая переменная пуста (т.е. пользователь ничего не ввел); проверка name=="null"
означает, что пользователь щелкнул по кнопке Отмена (cancell); ||
- означает логическое ИЛИ, т.е. хотя бы одно из условий должно быть истиннымelse document.write ("Привет, ", name,"!"); |
Доступ к базе данных имеют сотрудники, разбитые на три группы по уровням доступа. Они имеют следующие пароли:
- 9583, 1747 – выдавать сообщение "доступны модули баз А, В и С";
- 3331, 7922 - выдавать сообщение "доступны модули баз В и С";
- 9455, 8997 – выдавать сообщение "доступен модуль базы С".
Выводить доступные модули на запрос.
- Какие логические операторы существуют для сложных условий (И, ИЛИ, НЕ)?
- Что означает «правило лжи», и в каких случаях оно используется?
Тернарный оператор javaScript
if ... else
.Оператор включает в себя три операнда:
(1. условие ?
2. выполнить, если условие истинно :
3. выполнить, если условие ложно)
Синтаксис:
(логич. выражение) ? выражение 1 : выражение 2
:
, в случае ложности условия — выполняется то, что стоит после знака :
.Рассмотрим синтаксис тернарного оператора на примере:
str1 = (y%2) ? "нечетное" : "четное" |
str1
будет записано значение "нечетное", в случае, когда y
имеет нечетное значение, и "четное" - в обратном случае.b
присваивать значение 100
в случае истинности условия a > 1
и присваивать 200
в случае истинности условия a <= 1
. Выводить значение переменной b
.✍ Решение:
- Создайте веб-страницу с html-скелетом и тегом script.
- Добавьте следующий код:
- Протестируйте сценарий в браузере.
let a = 10; let b = (a>1) ? 100 : 200; alert(b); |
let
. Необходимо в переменную max
присвоить значение следующего тернарного оператора: если a
больше b
, то возвращаем a
, иначе возвращаем b
.Фрагмент кода:
let a = 1, b = 2, max = 0; ... document.write(max); |
Код:
if (a * b < 6) { result = 'Мало'; } else { result = 'Много'; } |
- Каков синтаксис тернарного оператора?
- Сколько аргументов у тернарного оператора?
Оператор переключения в javaScript - switch
Оператор switch
javascript служит для проверки переменной на множество значений:
Синтаксис:
switch (переменная или выражение) { case вариант1: //..блок операторов.. break case вариант2: //..блок операторов.. break default: //..блок операторов.. }
Блок, начинающийся со служебного слова default
можно опустить. Операторы блока будут выполнены в случае, если ни одно из перечисленных значений во всех case не подходит.
break
обязателен после каждого рассмотренного значения переменной (после каждого case); если его не использовать, то будут выведены все, расположенные ниже операторыСравним с оператором IF:
1 2 3 4 5 6 7 8 9 10 11 12 13 | let a = 2; switch(a) { case 0: // if (a === 0) case 1: // if (a === 0) alert("Ноль или один"); // тогда выводим ... break; case 2: // if (a === 2) alert("Два"); // тогда выводим ... break; default: // else alert("Много"); // иначе выводим ... } |
... case 0: case 1: alert("Ноль или один"); break; ... |
При a = 0
и a = 1
выполняется один и тот же оператор: alert("Ноль или один");
✍ Решение:
- Создайте веб-страницу с html-скелетом и тегом script.
- Инициализируйте переменную color значением, введенным пользователем в модальное окно:
- Проверьте значение переменной с помощью конструкции switсh, выводя на каждое значение - соответствующий перевод:
- Для цветов "синий" и "голубой" выполните группировку:
- Организуйте вывод для тех цветов, которые не предусмотрены программой:
- Протестируйте сценарий в браузере.
let color = prompt("Какой цвет?"); |
2 3 4 5 6 7 8 9 | switch (color) { case "красный" : alert("red"); break; case "зеленый": alert("green"); break; // ... |
break;
). Если переменная color имеет значение "зеленый", то вывести в модальное окно перевод - "green" и выйти из конструкции (break;).// ... case "синий": case "голубой": alert("blue"); break; // ... |
break;
).// ... default: alert("y нас нет сведений по данному цвету") } // конец switch |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | let number = prompt("Введите число 1 или 2:"); switch (number) { case "1" { document.write("Один"); }; break; case "2" { document.write("Два"); }; break; default { document.write("Вы ввели значение, отличное от 1 и 2"); }; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 | let value = "2"; switch (value) { case "1": case "2": case "3": document.write("Hello"); break; case "4": case "5": document.write("World"); default: document.write("Error"); } |
- На ветке сидит 1 ворона - На ветке сидит 4 вороны - На ветке сидит 10 ворон
Рекомендации:
- В зависимости от введенного числа, меняется окончание у слова "ворона".
- Для проверки использовать оператор
Switch
javascript. - Сохраните данную страницу в папке результатов (она пригодится для дальнейших работ).
- В каком случае целесообразно в качестве условного оператора использовать конструкцию switch?
- Для чего служит блок
default
в операторе switch? - Обязательно ли использование оператора
break
в конструкции switch? - Как осуществляется группировка для нескольких вариантов значений в операторе switch?
Циклические операторы языка javaScript - For
Синтаксис:
for(начальное значение счетчика; условие; приращение счетчика) { //..блок операторов.. }
for
используется, когда заранее известно, сколько раз должны повториться циклические действия (сколько итераций у цикла)- В качестве
начального значения счетчика итераций
используется выражение присваивания: например,i=0
- счетчик цикла начинается с нуля: - В качестве
приращения счетчика
указывается шаг, с которым должен увеличиваться счетчик: например,i++
указывает на то, что каждая итерация цикла будет сопровождаться его увеличением на 1: Условие цикла
- это и есть конечное значение счетчика: например,i<10
- счетчик, достигнув значения 10, останавливает цикл:
for(let i = 0; условие; приращение счетчика) { //..блок операторов.. } |
for(let i = 0; условие; i++) { //..блок операторов.. } |
for(let i = 0; i<10; i++) { //..блок операторов.. } |
Рассмотрим пример использования цикла for в javascript:
0 1 2 ... 8 9
✍ Решение:
- Для вывода последовательности чисел будем использовать счетчик цикла
for
, который должен менять свое значение от 0 до 9 согласно последовательности. - Значит, для начального значения счетчика цикла установите значение, равное 0; в качестве условия цикла установите заключительное значение -
i<10
, т.е. последним значением будет i=9; шаг счетчика должен равняться 1 (i++
), так как разница между членами последовательности - единица: - Для вывода значений последовательности воспользуйтесь значениями самого счетчика (
i
). Поскольку выводить следует каждое значение с новой строки, используйте после каждого вывода тег<br>
, который осуществляет переход на следующую строку: - Протестируйте сценарий в браузере.
1 2 3 4 | for (let i=0; i<10; i++) { } |
1 2 3 4 | for (let i=0; i<10; i++) { document.write(i+"<br>"); } |
i++
, соответственно, на экране будут появляться 0 1 2 3 ... 9, причем каждая цифра - с новой строки (тег <br>
).Рекомендации:
- В качестве последовательности чисел используйте счетчик цикла for.
- Для переменной-сумматора следует использовать идентификатор переменной sum.
Фрагмент кода:
for (let i=...;...;...){ sum = sum + ...; } ...
for
, если они имеются в другой части кода:let i = 0; for (; i < 3;) { alert( i++ ); // 0 1 2 } |
Операторы выхода из цикла break и continue в javaScript. Оператор Exit
break
прерывает выполнение всего тела цикла, т.е. осуществляет выход из цикла в javaScript.continue
прерывает выполнение текущей итерации цикла, но, продолжая при этом выполнение цикла со следующий итерации.Рассмотрим работу операторов break
и continue
на примере:
Фрагмент кода:
1 2 3 4 5 6 | for (let i=0;i<10;i++) { if (i==4) continue; document.write(i+"<br>"); if (i==8) break; } |
✍ Решение:
- В третьей строке примера стоит условие, из-за которого цифра 4 не будет выводиться на экран: оператор continue перейдет к следующей итерации цикла, не завершив текущую.
- В строке №5 осуществляется выход из цикла, но при этом цифра 8 будет выведена на экран, так как оператор вывода стоит до условия (в 4-й строке). Встретив break, интерпретатор завершит работу цикла.
- Т.о. на экране будет: 0 1 2 3 5 6 7 8 - каждая цифра с новой строки.
exit
.Чаще всего оператор используется для исключения ошибки ввода пользователя.
Рассмотрим пример:
Рекомендации:
Для выполнения пригодятся функции преобразования типа.
✍ Решение:
- Инициализируйте переменную number значением, введенным пользователем в модальное окно:
- Используя функцию
parseInt
преобразования строки в целое число, проверьте, является ли введенное значение числом: - Проверьте значение переменной number с помощью функции
isNaN
: - По правилу "лжи" организуйте проверку значения переменной x. Если значение не числовое выведите соответствующее замечание и завершите программу:
- Для продолжения программы (если введенное значение было числом), выведите следующее окно с предложением ввода:
- Протестируйте сценарий в браузере.
1 | let number = prompt("Введите число"); |
2 | number=parseInt(number); // возвратит NaN - не число |
NaN
(с англ. not a number - не число).3 | x = isNaN(number); // возвратит true, если значение не числовое |
isNaN
возвращает значение true в случае, если переменная не является числом4 5 6 7 | if (x){ alert("Необходимо число!"); exit; // выход из программы } |
8 | alert("Введите второе число");// при вводе не числа оператор не выполнится |
- Перечислите три параметра цикла for и поясните их назначение.
- Какие операторы предназначены для выхода из цикла и для его прерывания? Приведите примеры их использования.
- Для чего предназначен оператор exit?
Интересная работа с циклом for
возможна при использовании одновременно двух счетчиков в цикле.
Рассмотрим пример:
i=0 j=2 i=1 j=3 i=2 j=4
✍ Решение:
- В цикле
for
организуйте два счетчика: счетчикi
для вывода последовательности 0 1 2, счетчикj
для вывода последовательности 2 3 4: - Для вывода с каждой строки используйте тег <br>:
1 2 3 | for(i=0, j=2; i<10, j<5; i++, j++) { } |
for
теперь имеет по два значения, которые перечисляются через запятую (например, первый параметр с двумя значениями: i=0, j=2
). Сами параметры перечисляются через точку с запятой(;).1 2 3 4 | for(i=0, j=2; i<10, j<5; i++, j++) { document.write("<br>i=", i, "j=",j); } |
Перед выполнением следующего задания рассмотрим пример динамического построения html-страницы при помощи javascript.
- Необходимо динамически генерировать маркированные и нумерованные списки на веб-странице в зависимости от введенных пользователем данных: запрашивать у пользователя ввести вид списка (нумерованный (цифра 1) или маркированный (цифра 2)), а затем количество пунктов списка.
- В зависимости от ответа выводить на экран теги либо маркированного либо нумерованного списка с необходимым количеством пунктов.
- Если введен несуществующий тип списка, то выдавать сообщение "Введите правильный тип!" и осуществлять выход из программы (оператор exit).
Вспомним теги:
теги нумерованного списка:
<ol> <li></li> <li></li> <li></li> </ol> |
теги маркированного списка:
<ul> <li></li> <li></li> <li></li> </ul> |
Рекомендации:
В примере для вывода пунктов списка необходимо использовать цикл for
. Также понадобятся функции преобразования типов.
✍ Решение:
- Инициализируйте переменную listType значением, введенным пользователем в модальное окно:
- Проверьте введенное значение: для нумерованного списка (цифра 1) выведите тег
<ol>
, для маркированного (цифра 2) - тег<ul>
. Если введено другое значение, выведите замечание и закончите программу: - Инициализируйте переменную kolvo значением, введенным пользователем в модальное окно:
- Для преобразования строкового значения в числовое используйте функцию
parseInt
: - Для введенного количества пунктов списка организуйте цикл, в котором выводите теги для списка
<li>
: - Поскольку списки закрываются соответствующими тегами, в зависимости от вида списка выведите закрывающие теги:
- Протестируйте сценарий в браузере.
let listType=prompt("Введите '1' - если маркированный список, '2' - если нумерованный список"); |
if (listType=='1') document.write("<ol>") else if (listType=='2') document.write("<ul>") else { alert("Введите правильный тип"); exit; } |
let kolvo=prompt("Введите количество пунктов"); |
kolvo=parseInt(kolvo); |
for (let i=1; i<=kolvo; i++) document.write("<li></li>"); |
if (listType=='1') document.write("</ol>") else if (listType=='2') document.write("</ul>"); |
Написать скрипт, который выводит теги input (элементы управления) разного типа, в зависимости от введенной цифры:
1 - текстовое поле,
2 - кнопка,
3 - radio (переключатель).
Количество выведенных тегов должно тоже запрашиваться.
Вспомним теги:
Для 1 - текстовое поле: <input type="text"> Для 2 - кнопка: <input type="button"> Для 3 - radio: <input type="radio"> |
Пример вывода:
for
. "Рисовать" доску следует тегами html
для таблицы:
Вспомним теги:
<table border="1" width="30%"> <tr> <!-- строка --> <td>-</td><td>-</td><!-- две ячейки в строке --> </tr> </table> |
Рекомендации:
- Для рисования 9 строк необходимо организовать внешний цикл
for
со счетчикомi
. - Для рисования 9 ячеек в каждой строке необходимо организовать внутренний (вложенный) цикл
for
со счетчикомj
. - Для отрисовки тегов ячеек и строк следует использовать метод
document.write
.
- В ячейки таблицы вывести таблицу умножения, используя счетчики цикла (
i
иj
). - Первый ряд и первую колонку вывести с красным фоном (атрибут ячейки таблицы
bgcolor
):<td bgcolor='red'>-</td>
- Объясните, что значит понятие «динамическое построение страницы»?
- Какая конструкция языка чаще всего используется при динамическом построении страницы?
Циклические операторы языка javaScript - While
Синтаксис оператора while:
while (условие) { //..блок операторов.. };
alert()
✍ Решение:
- Листинг скрипта:
- Протестируйте результат в браузере.
1 2 3 4 5 | let a = 1; while (a < 1000){ alert(a); a*=2; } |
a*=2
→ использована операция составного присваивания: произведение, совмещенное с присваиванием, т.е. то же самое, что a = a*2
Как работают операторы break
и continue
в цикле while
?
let a = 1; while (a < 1000){ a*=2; if (a==64) continue; if (a==256) break; alert(a); } |
1 2 3 4 5 6 7 | let counter = 5; while (counter < 10) { counter++; document.write("Counter " + counter); break; document.write("Эта строка не выполнится."); } |
while
. Запрашивать значения переменных и выводить результат с помощью alert()
.
Дополните код:
1 2 3 4 5 6 7 8 9 | let x = ...; let y = ...; counter = 1; chislo=x; while (...){ chislo=x*...; counter=...; } alert(chislo); |
Цикл с постусловием do..while
Синтаксис:
do { //..блок операторов.. } while (условие);
do while
. Самостоятельно выясните, что будет выводиться в диалоговое окно.
✍ Решение:
- Листинг скрипта:
- Протестируйте результат в браузере.
1 2 3 4 5 6 7 8 9 10 | let a = 1; do { a*=2; if (a==64) continue; alert(a); if (a==256) break; }while(a<1000); |
1 2 3 4 5 6 7 8 9 10 11 12 13 | let counter = prompt("Введите число"); let factorial = 1; document.write("Факториал числа: " + counter + "! = "); do { if (counter == 0) { factorial = 1; break; } factorial = factorial / counter; counter = counter + 1; } while (counter > 0); document.write(factorial); |
Запрашивать имя пользователя до тех пор, пока пользователь действительно введет имя (т.е. поле действительно будет заполнено и не нажата клавиша cancel
). Когда имя введено, то выводить "Привет, имя!".
- Объясните синтаксис цикла while.
- Объясните синтаксис цикла do..while.
- Можно ли использовать операторы break и continue в цикле while?
Циклические операторы языка javaScript - цикл For In
Цикл for in
предназначен для прохода по массивам, коллекциям и объектам:
navigator
.
navigator
необходим для получения различной информации о браузере. Эта информация доступна через свойства объекта.✍ Решение:
- Создайте код:
- Протестируйте результат в браузере.
1 2 3 4 | for (let prop in navigator) { document.write(prop + "<br>"); } |
prop
создана для "перебора" всех свойств объекта navigator
.window
. Выводить каждое свойство с новой строки, чередуя цвет выводимых свойств: черный | синий.Результат:
Рекомендации:
- Использовать дополнительную переменную для проверки четности.
- Использовать условный оператор
If
.
Оператор обработки исключений в javaScript - try..catch
В некоторых случаях код на странице не работает непонятно по какой причине. Где искать ошибку? В таких случаях можно применить оператор try..catch
.
try..catch
пытается выполнить фрагмент кода, и, если в коде есть ошибка, то существует возможность выдать ошибку на экран.Ошибка хранится в объекте
e.message
.
Рассмотрим работу оператора на примере:
✍ Решение:
- В качестве сообщения с ошибкой будем использовать метод
prompt()
, написанный с ошибкой - promt(). Сообщение с ошибкой заключите в блокtry
: - Сообщение с извещением об ошибке следует разместить в блок
catch
: - Завершающее сообщение, которое необходимо выводить независимо от того, есть ли в коде ошибка, поместите в блок
finally
:
1 2 3 4 5 | alert("до"); try { promt("введите число"); // оператор с ошибкой } |
Try
с англ. - "пытаться", таким образом, ставим оператор try
перед фрагментом кода, который, возможно, содержит ошибку (в нашем случае ошибка действительно есть).6 7 8 9 | catch(e) { alert("обработка ошибки: "+e.message); } |
catch
(с англ. "ловить") сохраняет эту ошибку в объекте e
. В дальнейшем ее можно вывести в диалоговое окно - e.message
.10 11 12 13 14 | finally { alert("завершающие действия"); } alert("после"); |
catch
, а затем finally
(с английского "завершение", "наконец"), который выполнится всегда, независимо от того, была ли ошибка или нет. Даже если возникла ошибка в блоке catch
.finally
в конструкции необязателен.finally
и проследите за выполнением кода.На уроке были рассмотрены следующие операторы языка javascript и конструкции:
Javascript условные операторы:
Операторы цикла:
Создать игру для двоих:
- Программа просит первого игрока ввести число от 1 до 100 (второй игрок не видит введенное число). Затем второго игрока просит угадать введенное число. В ответ выводится сообщение «мало» либо «много» в зависимости от введенного ответа. Если игрок угадывает, - выводится поздравление. Если не угадывает – игра продолжается (до тех пор, когда число действительно будет угадано).
- Просчитывать число попыток и выдавать результат, когда число разгадано.
- В каких случаях целесообразно использовать цикл
For In
? Назовите пример его использования. - Каково назначение оператор
try..catch
? - Объясните назначение каждого блока оператора
try..catch
.
if (!name || name==»null») — Эта строка не работает, при нажатии на «ок» будет «привет незнакомец» а при «cancel» будет «привет null».
Должно быть ‘null’, а не «null».
ну это само собой разумеется: русские ёлочки всегда заменяем в коде на компьютерные кавычки
case 1: // if (a === 0)
Исправьте, пожалуйста.