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-битных символов. Следует иметь в виду, что в таблицах символов заглавные буквы идут впереди строчных, таким образом "Я" оказывается меньше "автор". Для правильного алфавитного сравнения строки следует привести к верхнему или нижнему регистру.
Операторы > (больше), < (меньше), >= (больше или равно), <= (меньше или равно):
Операторы == (равно), != (не равно):
Операторы сравнения на идентичность ( === ) и неидентичность ( !== ). Для идентичности операнды должны быть одного типа и указывать на один объект.
Логическое отрицание ( !) меняет истину на ложь и наоборот.
Логическое И ( && ) возвращает истину, только когда оба операнда истинны.
Логическое ИЛИ ( || )возвращает истину, только когда хотя бы один из операндов истина.
"Тройной" условный оператор позволяет сократить запись при присваивании значения по условию:
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, просмотров: 244.