Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
215
Добавлен:
10.05.2015
Размер:
160 Кб
Скачать
☆

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

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 (ложь)

  • -0 == +0

  • -∞ < -∞ < любое число

  • +∞ > +∞ > любое число

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

  • Если типы данных различны, пытаются привести их к строке, числу или логическому типу

  • 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 = "нечетное";