☕ Учебник по JavaScript: основные операторы
В этой статье рассмотрим основные операторы JS: от самых базовых математических до более специфичных. Узнаем, как использовать логические и битовые операции, что такое унарный оператор и в каком порядке выполняются операторы (таблица приоритета операторов).
Операторы присваивания
В результате использования оператора присваивания, левому операнду от знака присваивания =
устанавливается значение правого.
Выполнить присваивание можно следующими способами:
1. Обычное присваивание:
2. Присваивание с арифметическим действием:
+=
– для прибавления значения;-=
– вычесть правое значение из левого;*=
– умножить на операнд;/=
– разделить и записать значение в правый операнд.
Пример использования присваивания с арифметикой:
3. Присваивание с битовыми операциями:
- AND (
&=
) – побитовое И выполняет И с каждым битом правого и левого операнда, записывая значение в правый операнд; - XOR (
^=
) – побитовое исключающее ИЛИ по аналогии выполняет побитно исключающее ИЛИ, результат в правом операнде; - OR (
|=
) – побитовое ИЛИ.
Деструктуризация
Для присваивания сразу нескольких объектов значениями из массива пользуются деструктуризацией. В общем виде деструктуризация записывается так:
Количество переменных в левой части может:
- быть меньше, чем количество элементов массива – каждому записывается первые N значение;
- равно количеству элементов. В каждую переменную помещается соответствующее значение;
- больше, но в этом случае учитывайте появление значения
undefined
в своей переменной.
Операторы сравнения
Существует два вида сравнения: с приведением типа переменных и без.
С приведением типа переменных к одному:
- равно (
==
) –true
при равных значениях, причем типы могут быть разными (можно сравнить число и строку); - неравно (
!=
) –true
, если операнды не равны по значению; - больше/больше или равно (
>,>=
) – возвращаетtrue
, если левый операнд больше/или равен; - меньше/меньше или равно (
<,<=
) –true
, если левый операнд меньше/меньше или равен.
Без приведения типов:
- строго равно (
===
) –true
, если операнды равны по значению и по типу; - строго неравно (
!==
) –true
при разных операндах или их типах.
Арифметические операторы
В JS поддерживаются следующие виды арифметических операторов:
Сложение | + | x + y |
Вычитание | - | x – y |
Умножение | * | x * y |
Деление | / | x / y |
Остаток от деления | % | 9 % 4 вернет значение 1 |
Инкремент | ++ | 6++ вернет 6, а после выполнит инкремент. ++6 выполнит инкремент и вернет 7. |
Декремент | -- | 6-- вернет 6, а после выполнит декремент. --6 выполнит декремент и вернет 5. |
Возведение в степень | ** | 5** 2 вернет 25 |
Битовые (поразрядные) операторы
Любая битовая операция представляет переданное число в виде двоичного. Хотя действия обрабатывают двоичные число, но возвращаемое значение представлено обычным десятичным числом.
Битовые логические операторы
Битовые операции представляют собой следующий набор операторов:
- Побитовое И (
x & y
) – для каждого бита выполняется операция И. - Побитовое ИЛИ (
x | y
) – для каждой пары битов выполняется ИЛИ. - Побитовое НЕ (
~ х
) – инверсия битов. - Побитовый XOR (
x ^ y
) – исключающее ИЛИ, единица в битах там, где значение пары битов разное (1 и 0).
Битовые операторы сдвига
Чтобы выполнить битовый сдвиг, используйте один из методов:
<<
– битовый сдвиг влево, первые биты отбрасываются, слева дополняется нулевыми битами;>>
– битовый сдвиг вправо, правые биты отбрасываются, начало заполняется копией последнего левого бита;>>>
– сдвиг вправо с заполнением слева нулевыми битами.
Также эти операторы можно использовать с оператором присваивания =
. Например:
Логические операторы
Логические операторы чаще всего применяются для создания условий. В JS применять логические операторы можно ко всем типам данных. После применения операторов возвращается значение true
или false
.
Распространенные виды логических операторов:
||
– логическое ИЛИ. Возвращает true, если хотя бы один из элементовtrue
.&&
– Логическое И. Вернетtrue
только в том случае, если оба элементаtrue
, иначе –false
.!
– Оператор НЕ. Инверсия элемента: приtrue
– вернетfalse
.
Сокращённая оценка
Сокращенная оценка гарантирует правильный результат без лишних вычислений. Позволяет выполнять сокращенные вычисления с помощью правил:
false && anything
– всегда возвращаетfalse
;true || anything
– всегда возвращаетtrue
.
Строковые операторы
Операция сложения применима и к строковым типам данных для объединения операндов в одну строку. Пример использования оператора +
:
Можно использовать сокращенную запись +=
.
Условный (тернарный) оператор
Тернарный оператор представляет собой сокращенную запись условия. Общий шаблон оператора выглядит так:
условие? значение1 : значение2
- если
условие
Истина, то вся конструкция будет возвращатьзначение1
- в противном случае то, что стоит после
:
, т. е.значение2
Пример использования тернарного оператора:
Оператор «запятая»
Запятая помогает определить ту последовательность действий, которая должна быть выполнена за один раз. Например, за один проход в цикле необходима итерация для двух переменных:
Стоит учитывать, что стоящие через запятую вычисления будут возвращать только последнее значение.
Унарные операторы
Унарные операторы – это те, которые используют только один оператор. Примеры таких операторов: delete
, typeof
, void
.
delete
Оператор удаляет элемент массива по индексу, а также удаляет свойство из объекта.
Delete
возвращает true
, когда операцию удаления можно выполнить, false
в других случаях. Например:
- нельзя удалить переменную, объявленную через
var
,let
; - нельзя удалять стандартные методы.
Удаление элементов массива
Стоит быть внимательнее при удалении элемента массива с помощью delete
. Данная операция не влияет на размер массива, удаляется только элемент. Также удаленный элемент станет undefined
и будет недоступен для операций.
Оператор typeof
Оператор typeof
возвращает строку со значением типа операнда.
Оператор void
Оператор void
вычисляет любое выражение, которое ему было передано, и всегда возвращает undefined
. С помощью оператора можно создать сразу же вызываемую функцию:
Операторы отношения
Операторы отношения проводят сравнения двух операндов и возвращают true
или false
.
Оператор in
С помощью оператора in
проверяется наличие свойства в объекте или элемента в массиве. Возвращает всегда булева значения.
Оператор instanceof
Проверяет тип объекта и указанный тип. Возвращает true
или false
.
Приоритет операторов
Каждый оператор обладает собственным свойством приоритета, что влияет на порядок вычислений выражений. В таблице ниже перечислены все операторы и их приоритет в порядке уменьшения.
Приоритет | Тип оператора | Оператор |
19 | Группировка | ( … ) |
18 | Операторы доступа к элементам списка, свойствам функция new с аргументами, вызов функции | obj.title array[1] new …(…) func(params) |
17 | Функция new без аргументов | new …() |
16 | Постфиксный инкремент и декремент | ...++...-- |
15 | Логическое НЕ,побитовое отрицание, префиксный инкремент и декремент, унарные функции typeof, void, delete | !~++...--...typeofvoiddelete |
14 | Степень числа | ** |
13 | Умножение, деление, остаток от деления | */% |
12 | Сложение, вычитание | +- |
11 | Побитовые сдвиги | >><<>>> |
10 | Меньше, меньше или равно, больше, больше или равно, in, instanceof | <<=>>=ininstanceof |
9 | Равно, неравно, строго равно, строго неравно | ==!====!== |
8 | Побитовое И | & |
7 | Побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ | ^ |
6 | Побитовое ИЛИ | | |
5 | Логическое И | && |
4 | Логическое ИЛИ | || |
3 | Тернарный оператор | consotion ? value1 : value2 |
2 | Присваивание,присваивание с арифметическим оператором, присваивание со сдвигом, с битовой или логической операцией | = +=, -=, *=, /= <<=, >>=, >>>= &=, ^=, |= &&=, ||= |
1 | Запятая | , |
В этой статье мы разобрались с основными моментами работы операторов в JS, определили как использовать логические и битовые операции, узнали что такое унарный оператор и какой приоритет у каждого из них.