Операторы и управляющие структуры
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Javascript поддерживает арифметические, логические и битовые операторы и ряд вспомогательных операторов.

Арифметические операторы

Операции сложения (+), вычитания (-), умножения (*) и деления (/) выполняются в общепринятой манере.

x = ((1 + 2)*3 – 4)/5; // 1

Оператор деления с остатком (%) делит первое число на второе и возвращает остаток

a = 9 % 4; // 1 b = 19 % 6.7; // 5.6

В Javascript нет операции целочисленного деления. Чтобы получить целое частное, следует отсечь десятичные знаки.

dividend = 13; // делимое divisor = 5; // делитель quotient = parseInt(dividend / divisor); // частное (2) reminder = dividend % divisor; // остаток (3)

Оператор плюс (+) требует некоторого дополнительного внимания. Помимо арифметического сложения этот оператор выполняет также конкатенацию (строковое слияние). Результат может иногда оказаться неожиданным (для начинающего разработчика).

a = 1; b = '2'; c = a + b; // 12

Строковое слияние происходит всегда, когда хотя бы один из операндов – строка. Остальные арифметические операторы пытаются сначала преобразовать строку в число и только в случае неуспеха возвращают ошибку NaN (Not a Number).

Арифметические операторы могут быть объединены с оператором присваивания (=), что является удобной сокращенной записью операций.

a += 3; // эквивалентно a = a + 3 b /= 2; // b = b / 2 c = 'Hello'; c += ' world!'; // Hello world

Есть также три одноместных оператора: смены знака (-), инкремента (++) и декремента (--).

x = -x; // смена знака x++; // эквивалентно x += 1 или x = x + 1 --x; // эквивалентно x -= 1 или x = x – 1

Операторы инкремента и декремента могут иметь префиксную ( ++x ) и постфиксную ( x++ ) формы. В префиксной форме переменная сначала изменяется, затем используется, в постфиксной сначала используется, затем изменяется.

var a, b, c, d; a = b = 2; // так можно, поскольку оператор присваивания возвращает значение c = ++a; // 3 d = b++; // 2

Логические операторы

Операторы сравнения производят сравнение числовых или строковых операндов и возвращают логическое значение. При сравнении строки рассматриваются как цепочки 16-битных символов. Следует иметь в виду, что в таблицах символов заглавные буквы идут впереди строчных, таким образом "Я" оказывается меньше "автор". Для правильного алфавитного сравнения строки следует привести к верхнему или нижнему регистру.

Операторы > (больше), < (меньше), >= (больше или равно), <= (меньше или равно):

  • Пытаются привести оба операнда к числам
  • Если оба операнда – строки, выполняют строковое сравнение
  • Если любой из операндов имеет значение NaN (Not a Number), возвращают false (ложь)
  • < < любое число
  • > > любое число

Операторы == (равно), != (не равно):

  • Если типы данных различны, пытаются привести их к строке, числу или логическому типу
  • NaN != NaN
  • -0 == +0
  • null == null, null == undefined
  • 1 == '1', 1 == true, 0 == false, true != 'true'

Операторы сравнения на идентичность ( === ) и неидентичность ( !== ). Для идентичности операнды должны быть одного типа и указывать на один объект.

Логическое отрицание ( !) меняет истину на ложь и наоборот.

Логическое И ( && ) возвращает истину, только когда оба операнда истинны.

Логическое ИЛИ ( || )возвращает истину, только когда хотя бы один из операндов истина.

"Тройной" условный оператор позволяет сократить запись при присваивании значения по условию:

var x = 3; result = x % 2 == 0 ? "четное" : "нечетное"; //эквивалентно if (x % 2 == 0) result = "четное"; else result = "нечетное";

 

Управляющие структуры

Ветвящиеся структуры, if, if…else и switch, позволяют направить выполнение программы в соответствии с проверяемым условием.

if (b != 0) c = a / b; //выполнить деление только если делитель не ноль if (x % 2 == 0) document.write(x + ' четное'); else document.write(x + ' нечетное'); var d = new Date(); // объект Date – текущая дата и время switch (d.getDay()) { case 0:   document.write("Воскресенье");   break; //выход из переключателя.       //Если опущен, будет выполнена и следующая инструкция       case 1:   document.write("Понедельник");   break; case 2:   document.write("Вторник");   break; case 3:   document.write("Среда");   break; case 4:   document.write("Четверг");   break; case 5:   document.write("Пятница");   break; case 6:   document.write("Суббота");   break; default: // выполняется, если не выполнено         //ни одно из предыдущих условий   document.write(d.getDay()); }

Второй тип управляющих структур – циклы, то есть повторное выполнение некоторой инструкции или блока инструкций до тех пор, пока выполняется некоторое условие. В Javascript существуют четыре формы циклов:

Цикл for управляется счетчиком.

var a = []; // объявляем массив for (var i = 0; i < 10; i++) a[i] = i; // заполняем 10 элементов массива var sum = 0; for (var j = 0, N = a.length; j < N; j++) sum += a[j]; document.write('Сумма = ' + sum);

Специальная форма for, for/in, удобна для перебора свойств объекта.

var nav = window.navigator; // информация о браузере for (prop in nav) document.write(prop + ': ' + nav[prop] + '<br>\n'); // печатает построчно пары свойство: значение объекта.

В цикле while условие проверяется перед началом каждого повтора. Если условие изначально ложно, цикл не будет выполнен.

var x = 0; while (x != 4) {//цикл повторяется, пока условие истинно x = window.prompt('Сколько будет 2 * 2', x); //метод window.prompt открывает диалоговое окно с полем ввода, //куда нужно ввести ответ.     } if (x == 4) window.alert("Правильно");

В цикле do…while условие проверяется в конце цикла, то есть цикл повторяется как минимум один раз.

var x = 0; do { x = window.prompt('Сколько будет 2 * 2', x); } while (x != 4); //цикл повторяется, пока условие истинно if (x == 4) window.alert("Правильно");

В некоторых случаях требуется выход из цикла или переход к началу цикла до завершения всего блока инструкций. Оператор break заканчивает выполнение цикла и передает управление первой инструкции после цикла. Оператор continue пропускает инструкции до конца блока и начинает новый повтор цикла.

var x = 0; while (x != 4) { x = window.prompt("Сколько будет 2*2?", x); if (x == null)//пользователь нажал "Отмена"   break; // выход из цикла if (Number(x) == x)// является ли x числом   continue; // пропускаем остаток и начинаем новый повтор // с проверкой условия //сюда попадаем, только если введено не число window.alert("Вводите только числа"); } // конец цикла if (x == null) window.alert("Вы сдались"); else window.alert("Вы угадали");

Дата: 2019-02-02, просмотров: 209.