Операции в Javascript. Приоритеты операций.

Цикл статей «Учебник Javascript».

Следующая статья — «Операторы сравнения в Javascript».
Предыдущая статья — «Javascript. Определение типа переменной с помощью typeof.».

Операции в Javascript бывают унарные, бинарные и тернарные.

Унарные операции это операции, которые применяются к одному операнду: ++ , -- , ~ , ! ; бинарные операции применяются к двум операндам: + , - , * /, . , % , & , | , ^ , && , || , = , < , > , == , === , <= , >= , != , !== ; тернарный операнд ?:  применяется к трём операндам.

Оператор инкремента ++

Увеличивает значение операнда на единицу. Есть постфиксный вариант и префиксный. Постфиксный вариант сначала возвращает текущее значение, а затем увеличивает на единицу. Префиксный вариант сначала увеличивает на единицу, а затем возвращает значение. Может применяться только к переменной. Нельзя писать 3++ .

 Оператор декремента --

Уменьшает значение операнда на единицу. Имеет две формы, как и оператор инкремента. Постфиксный вариант сначала возвращает текущее значение, а затем увеличивает на единицу. Префиксный вариант сначала увеличивает на единицу,  а затем возвращает значение. Может применяться только к переменной. Нельзя писать 4-- .

Оператор логического отрицания !

Унарный оператор логического отрицания возвращает false, если операнд равен true и true, если операнд равен false. Причём значения 0, null, undefined, «» (пустая строка), NaN считаются за false. Любое число, Infinity, объект, непустая строка считаются за true.

 

Операторы сложение, вычитания, умножения, деления, взятие остатка

Бинарные операторы сложения, вычитания, умножения и деления имеют вполне очевидное значение.

 Оператор присваивания =

Оператор присваивания присваивает переменной, находящейся в левой части значение выражения в правой части.

 Побитовые операторы

Побитовые операторы работают также, как в Java. Вот их список:

  1. Побитовый И &
  2. Побитовый ИЛИ |
  3. Побитовый XOR ^
  4. Побитовое отрицание ~
  5. Сдвиг влево <<
  6. Сдвиг вправо >>
  7. Сдвиг вправо с заполнением нулём >>>

Я не буду их здесь описывать, так как их действие очевидно, для тех, кто знаком с бинарной арифметикой.

Логический И, логический ИЛИ

Логический И возвращает true, если оба операнда true. Логический ИЛИ возвращает true, если один из операндов false. Во всех остальных случаях они возвращают false.

 Оператор запятая

Позволяет перечислять выражения через запятую. Выражения вычисляются, но возвращается только результат последнего выражения.

 Конкатенация строк

Если оператор + применить к строкам, то результатом будет объединённая строка. Если один из операндов строка, то второй операнд преобразуется к строке и затем строки соединяются.

 

Унарный плюс

Унарный плюс не меняет знак числа. Можно использовать для преобразования строки в число.

 Унарный минус

Унарный минус меняет знак числа на противоположный.

 

Приоритет операций

Все операции выполняются слева направо согласно приоритету. Те операции, у которых приоритет выше, выполняются раньше. Например, var x = 3+4*2. Здесь сначала будет выполнено умножение, затем сложение, затем присвоение.

Таблица приоритетов операций

Эта таблица отсортирована от наивысшего (19)до наименьшего (0) приоритета.

Приоритет Тип оператора Ассоциативность Операторы
19 Группировка n/a ( … )
18 Доступ к члену left-to-right … . …
Доступ к вычисленному члену left-to-right … [ … ]
new (со списком аргументов) n/a new … ( … )
17 Вызов функции left-to-right … ( … )
new (без списка аргументов) right-to-left new …
16 Постфиксный инкремент n/a … ++
Постфиксный декремент n/a … --
15 Логическое отрицание right-to-left ! …
Бинарное отрицание right-to-left ~ …
Унарный плюс right-to-left + …
Унарный минус right-to-left - …
Префиксный инкремент right-to-left ++ …
Префиксный декремент right-to-left -- …
typeof right-to-left typeof …
void right-to-left void …
delete right-to-left delete …
14 Умножение left-to-right … * …
Деление left-to-right … / …
Остаток от деления left-to-right … % …
13 Сложение left-to-right … + …
Вычитание left-to-right … - …
12 Бинарный сдвиг влево left-to-right … << …
Бинарный сдвиг вправо left-to-right … >> …
Бинарный сдвиг вправо с заполнением нулём left-to-right … >>> …
11 Меньше left-to-right … < …
Меньше или равно left-to-right … <= …
Больше left-to-right … > …
Больше или равно left-to-right … >= …
in left-to-right … in …
instanceof left-to-right … instanceof …
10 Равенство left-to-right … == …
Неравенство left-to-right … != …
Строгое равенство left-to-right … === …
Строгое неравенство left-to-right … !== …
9 Бинарный И left-to-right … & …
8 Бинарный XOR left-to-right … ^ …
7 Бинарный ИЛИ left-to-right … | …
6 Логаический AND left-to-right … && …
5 Логический OR left-to-right … || …
4 Условие (тернарный оператор) right-to-left … ? … : …
3 Присваивание right-to-left … = …
… += …
… -= …
… *= …
… /= …
… %= …
… <<= …
… >>= …
… >>>= …
… &= …
… ^= …
… |= …
2 yield right-to-left yield …
1 Spread n/a ... …
0 Comma / Sequence left-to-right … , …

 

Цикл статей «Учебник Javascript».

Следующая статья — «Операторы сравнения в Javascript».
Предыдущая статья — «Javascript. Определение типа переменной с помощью typeof.».

Один комментарий к “Операции в Javascript. Приоритеты операций.”

  1. В таблице приоритетов операций опечатка:
    Логаический AND
    А статья полезная. Спасибо)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *