- •12. Сценарии Javascript
- •Характеристики языка Javascript
- •Вставка сценария в html-документ
- •Переменные и типы данных
- •Операторы и управляющие структуры
- •Арифметические операторы
- •Логические операторы
- •Управляющие структуры
- •Встроенные объекты Javascript
- •Создание пользовательских объектов
- •Внешние объекты
- •Пример: карточная игра Blackjack
- •Правила игры
- •Разработка объектной модели
- •Вопросы
Операторы и управляющие структуры
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 = "нечетное";
