8. Выражения и операции в JavaScript.

8.1. Выражения.

     Выражение - совокупность допустимых литералов, переменных и операторов языка, предназначенных для выполнения операций над ними и сведения к одному значению. Значением может быть число, строка или логическое значение. Принципиально имеются два типа выражения: которые присваивают какое-либо значение переменной, или просто являются значением.
     Например,
            x = 7
является выражением, присваивающим переменной х значение 7.

В другом случае, выражение
             3 + 4
вычисляет значение 7 и не производит никаких присваиваний.

     В JavaScript имеется несколько типов выражений:

     - арифметические: результатом является числовое значение,
     - строковые: результатом является строка, например: "Fred" или "234",
     - логические: вычисляют значения true или false.

     Специальное ключевое слово null задает нулевое значение. Если переменной не было присвоено никакого значения, она является неопределенной (undefined) и применение ее в программе приведет к диагностике об ошибке.

8.1.1. Условные выражения.

     Условные выражения могут принимать одно из двух значений в зависимости от выполнения условия.
     Синтаксис условного выражения:

         (condition) ? val1 : val2

     Если условие принимает значение true, выражение получает значение val1, в противном случае - значение val2.
     Например:

         status = (age >= 18) ? "adult" : "minor"

8.2. Операторы присваивания (=, +=, -=, *=, /=)

     Операторы присваивания назначают левому операнду значение правого операнда. Основной оператор присваивания - равенство (=). Таким образом, оператор x = y присваивает переменной x значение переменной y.
     Сокращенная форма стандартных арифметических операций:

     x += y означает x = x + y,
     x -= y означает x = x – y,
     x *= y означает x = x * y,
     x /= y означает x = x / y,
     x %= y означает x = x % y.

     Имеются дополнительные операторы присваивания для битовых опреаций:

     x <<= y означает x = x << y,
     x >>= y означает x = x >> y,
     x >>>= y означает x = x >>> y,
     x &= y означает x = x & y,
     x ^= y означает x = x ^ y,
     x |= y означает x = x | y.

8.3. Операции в JavaScript.

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

     operand1 operator operand2

Например:    3 + 4  or  x * y

     Унитарные операции содержат один операнд, до или после оператора:

     operator operand

или

     operand operator

     Например:    x++  или  ++x.

8.3.1. Арифметические операции.

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

     Стандартные арифметические операции.

     Стандартными арифметическими операциями являются :сложение (+), вычитание (-), умножение (*) и деление (/).

    Модуль числа (%).
    Формат оператора:    var1  %  var2

     Например, результатом операции 12 % 5 будет 2.

     Инкрементация (++)
     Формат оператора: var++ или ++var

     Операция добавляет 1 к значению операнда. Существуют две формы операции инкрементации: префиксная (++var) и суффиксная (var++). В префиксной формк происходит инкрементация операнда и возвращение результата операции. В суффиксной форме инкрементация операнда выполняется после возвращени результата операции.
Примеры:

1.     x = 3
        y = x++

Значением y будет 3, а значением x - 4.

2.     x = 3
        y = ++x

Значением x и y будет 4.

    Декрементация (--)
    Формат оператора: var-- или --var

     Операция вычитает 1 из операнда. Существуют две формы операции декреиентации: префиксная (--var) и суффиксная (var--). В префиксной формк происходит декреиентация операнда и возвращение результата операции. В суффиксной форме декрементация операнда выполняется после возвращени результата операции.
Примеры:

1.     x = 3
        y = x--

Значением y будет 3, а значением x - 2.

2.     x = 3
        y = ++x

Значением x и y будет 2.

Отрицание (-).

Операция меняет знак операнда на противоположный.
Пример:

     y = -x

8.3.1.1. Битовые операции.

     Битовые операции расматривают операнды как набор битов ( значений 0 и 1), но возвращают результат в стандартном для JavaScript представлении числовых значений.

Логические битовые операции.

     Концептуально логические битовые операции работают следующим образом:
     - операнды конвертируются в 32-битные целые числа,
     - выполняются операции попарно для соответствующих битов обоих операндов (первый с первым, второй со вторым и т. д. ).

Операции:

   & (AND) возвращает значение 1, если оба бита равны 1,
   | (OR) возвращает значение 1, если хотя бы один бит равен 1,
   ^ (XOR) возвращает значение 1, если ни один их битов не равен 1.

Пример: двоичное представление 9 - 1001, а 15 - 1111.

     15 & 9 = 9 (1111 & 1001 = 1001)
     15 | 9 = 15 (1111 | 1001 = 1111)
     15 ^ 9 = 6 (1111 ^ 1001 = 0110)

8.3.1.2. Операции сдвига.

     Операции сдвига требуют два операнда: первый - сдвигаемй операнд и второй - указатель сдвига (числа сдвигаемых битов). Направление сдвига определяется выбранным знакои операции. Операции сдвига конвертируют значения операндов к 32-битному целому представлению, а результат сдвига возвращается в формате первого операнда.

Операция левого сдвига (<<).

     Операция сдвигает биты первого операнда влево на число позиций, указанных во втором операнде. Значения выдвинутых битов пропадают, а на место сдвинутых битов справа записываются нули.
Например,

     9<<2 = 36.

Операция правого сдвига с расширением знака (>>).

     Операция сдвигает биты первого операнда вправо на число позиций, указанных во втором операнде. Значения выдвинутых битов пропадают, а на место сдвинутых битов слева записывается значение левого "знакового" бита операнда.
Пример.

     9 >> 2 = 2
    -9 >> 2 = -3

Операция правого сдвига без расширения знака (>>>).

     Операция сдвигает биты первого операнда вправо на число позиций, указанных во втором операнде. Значения выдвинутых битов пропадают, а на место сдвинутых битов слева записываются нули.
Пример.

    19 >>> 2 = 4.

8.3.2. Логические операции.

     Логические операции воспринимают операнды как логические значения true или false. Результатом также будeт логическое значения.

And (&&)
Формат: expr1 && expr2

     Логическая операция "and" возвращает значение true, если оба логические выражения expr1и expr2 есть true, иначе - false.

Or (||)
Формат: expr1 || expr2

     Логическая операция "or" возвращает значение true, если хотя бы одно из логических выражений expr1 или expr2 есть true. Если оба выражения есть false, то и результатом будет - false.

Not (!)
Формат: !expr

     Логическая операция "not" - унитарный оператор, который дает отрицание его операнду.Таким образом, если значение expr есть true, результатом будет false, а если значение expr есть false , результатом будет true.

Примеры.

1. if( (a < 10) && (c >= 20) )
     { ..... }
2. if(!confirm("Are you sure?")
     {........ }

8.3.2.1. Операции сравнения (= =, >, >=, <, <=, !=).

     Операции сравнивают оба своих операнда и результатом сравнения будет логическое значение true или false. Операндами могут быть числовые или строковые значения.

Операции::

- равно (= =): возвращаемое значение будет true, если операнды равны,.
- не равно (!=): возвращаемое значение будет true, если операнды не равны
- больше (>): возвращаемое значение будет true, если левый операнд больше правого,
- больше или равно (>=): возвращаемое значение будет true, если левый операнд больше правого или равен ему,
- меньше (<): возвращаемое значение будет true, если левый операнд меньше правого,
- меньше или равно (<=): возвращаемое значение будет true, если левый операнд меньше правого или равен ему.

Пример:

     if( (age <= 18) || ( height < 150)
     alert("You are too young!")

8.3.3. Строковые операции.

     В дополнение к операциям сравнения к строковым значениям применяется операция конкатенации (+), выполняющая слияние двух строк в одну. Возвращаемым значением операции будет новая строка.
     Например, операция
        "my " + "string"
возвращает значение "my string"

     Существует укороченная форма операции конкатенации (+=).
     Например, если переменная mystring содержит строку "alpha", то выражение
        mystring += "bet"

присвоит переменной mystring значение "alphabet".

8.4. Старшинство операций.

     Старшинство операций заключается в приоритете выполнения действий в сложных выражениях. Возможно, используя скобки, изменить последовательность выполнения операций.
Старшинство операций в порядке возрастания приоритетов:

запятая ,
присвоение = += -= *= /= %= <<= >>= >>>= &= ^= |=
проверка условия ?
логическое or ||
логическое and &&
двоичное or |
двоичное xor ^
двоичное and &
сравнение == !=
соотношение < <= > >=
двоичный сдвиг << >> >>>
сложение/вычитание + -
умножение/деление * / %
отрицание/инкрементация ! - ++ --


BACK.gifВернуться к оглавлению