Опубликован: 01.09.2010 | Уровень: для всех | Доступ: платный | ВУЗ: Сибирский федеральный университет
Лекция 9:

Сценарии Javascript

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

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
  • -\infty < -\infty < любое число
  • +\infty > +\infty > любое число

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

  • Если типы данных различны, пытаются привести их к строке, числу или логическому типу
  • 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 = "нечетное";
Юрий Шах
Юрий Шах

Профессиональный веб-дизайн: Введение в современные веб-технологии
Самостоятельная работа 4

"3. Создание внешней таблицы.

Теперь создайте таблицу с двумя строками. Во второй строке создайте две ячейки - в первую переместите таблицу цифр, а во вторую - таблицу знаков."

Как в ячейку <td> поместить таблицу? Таблица же сама состоит из ячеек. Исходя из задания следует, что <td> может быть родителем для <td>, но это противоречит правилам HTML?
Если не прав - поправьте.
Также прошу разъяснить, как именно выполнить занное условие - поместить в табличную ячейку таблицу цифр, а в другую ячейку - таблицу знаков? 

Елена Сапегова
Елена Сапегова

После прохождения теоретической части пришло письмо об окончании теоретической части курса, будет ли практическая часть?