Skip to main content

Операторы

Операторы - это символы, которые используются для выполнения операций над данными. Операторы могут выполнять различные операции, такие как сложение, вычитание, умножение, деление, сравнение и т.д.

В JavaScript есть следующие типы операторов. Данный подраздел описывает каждый тип и содержит информацию об их приоритетах друг над другом:

  • Арифметические операторы
  • Операторы сравнения
  • Операторы присваивания
  • Логические операторы
  • Строковые операторы
  • Условный (тернарный) оператор
  • Унарные операторы
  • Операторы отношения
  • Битовые (поразрядные) операторы

Арифметические операторы

  • + - Сложение
  • - - Вычитание
  • * - Умножение
  • / - Деление
  • % - Остаток от деления
  • ++ - Инкремент*
  • -- - Декремент*
  • ** - Возведение в степень
let x = 10;
let y = 5;

let sum = x + y; // 15
let difference = x - y; // 5
let product = x * y; // 50
let quotient = x / y; // 2
let remainder = x % y; // 0
let increment = x++; // 11
let decrement = y--; // 4
let exponentiation = x ** y; // 100000

*Инкремент и декремент могут быть использованы как префиксные и постфиксные операторы. Префиксный инкремент увеличивает значение переменной на 1 и возвращает новое значение, а постфиксный инкремент возвращает старое значение и увеличивает значение переменной на 1. Префиксный декремент уменьшает значение переменной на 1 и возвращает новое значение, а постфиксный декремент возвращает старое значение и уменьшает значение переменной на 1.

Префиксный инкремент

let x = 10;
let y = ++x;

console.log(x); // 11
console.log(y); // 11

Постфиксный инкремент

let x = 10;
let y = x++;

console.log(x); // 11
console.log(y); // 10

Битовые (поразрядные) операторы

Битовые операторы работают с двоичными числами на уровне битов. Они преобразуют числа в двоичный формат, а затем выполняют операции над каждым битом.

  • & - Побитовое И
  • | - Побитовое ИЛИ
  • ^ - Побитовое исключающее ИЛИ
  • ~ - Побитовое НЕ
  • << - Побитовый сдвиг влево
  • >> - Побитовый сдвиг вправо
  • >>> - Побитовый сдвиг вправо с заполнением нулями
let x = 5; // 101
let y = 3; // 011

let bitwiseAnd = x & y; // 1
let bitwiseOr = x | y; // 7
let bitwiseXor = x ^ y; // 6
let bitwiseNot = ~x; // -6
let bitwiseLeftShift = x << 1; // 10
let bitwiseRightShift = x >> 1; // 2
let bitwiseUnsignedRightShift = x >>> 1; // 2

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

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

  • == - Равно
  • != - Не равно
  • === - Строго равно
  • !== - Строго не равно
  • > - Больше
  • < - Меньше
  • >= - Больше или равно
  • <= - Меньше или равно
let x = 5;
let y = 3;

let isEqual = x == y; // false
let isNotEqual = x != y; // true
let isStrictEqual = x === y; // false
let isStrictNotEqual = x !== y; // true
let isGreaterThan = x > y; // true
let isLessThan = x < y; // false
let isGreaterThanOrEqual = x >= y; // true
let isLessThanOrEqual = x <= y; // false

В чем разница между == и ===?

JavaScript будучи языком со слабой типизацией, позволяет сравнивать значения разных типов. Оператор == сравнивает значения, преобразуя их к одному типу, из-за чего могут возникнуть неожиданные результаты, например, 5 == '5' вернет true или 0 == false вернет true. Оператор === сравнивает значения без приведения типов, поэтому в обоих примерах выше результат будет false.

let x = 5;
let y = "5";

let isEqual = x == y; // true

let isStrictEqual = x === y; // false

Логические операторы

Логические операторы используются для объединения или инвертирования логических значений.

  • && - Логическое И
  • || - Логическое ИЛИ
  • ! - Логическое НЕ
let x = true;
let y = false;

let logicalAnd = x && y; // false
let logicalOr = x || y; // true
let logicalNot = !x; // false

Мы знаем что операторы сравнения возвращают логические значения, поэтому их можно использовать вместе с логическими операторами.

let x = 5;
let y = 3;

let isGreaterThan = x > y; // true
let isLessThan = x < y; // false

let isGreaterAndLessThan = isGreaterThan && isLessThan; // false
let isGreaterOrLessThan = isGreaterThan || isLessThan; // true

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

Операторы присваивания используются для присваивания значения переменной.

Вот так выглядит оператор присваивания - =:

let x = 5;

В JavaScript можно использовать сокращенные формы операторов присваивания, чтобы уменьшить количество кода. сокращенные формы операторов присваивания записываются в виде оператор= и выполняют операцию и присваивание в одном выражении. Например x += y можно записать как x = x + y.

Вот список сокращенных форм операторов присваивания:

  • += - Сложение и присваивание
  • -= - Вычитание и присваивание
  • *= - Умножение и присваивание
  • /= - Деление и присваивание
  • %= - Остаток от деления и присваивание
  • <<= - Побитовый сдвиг влево и присваивание
  • >>= - Побитовый сдвиг вправо и присваивание
  • >>>= - Побитовый сдвиг вправо с заполнением нулями и присваивание
  • &= - Побитовое И и присваивание
  • |= - Побитовое ИЛИ и присваивание
  • ^= - Побитовое исключающее ИЛИ и присваивание
let x = 5;
let y = 3;

x += y; // 8
x -= y; // 5
x *= y; // 15
x /= y; // 5
x %= y; // 2
x <<= y; // 40
x >>= y; // 5
x >>>= y; // 0
x &= y; // 1
x |= y; // 3
x ^= y; // 0

Условный (тернарный) оператор

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

condition ? value1 : value2;

Если условие condition истинно, то оператор возвращает value1, в противном случае он возвращает value2.

let status = age >= 18 ? "adult" : "minor";

Данное выражение присваивает значение "adult" переменной status, если age имеет значение 18 или более. В противном случае переменной status присваивается значение "minor".

Унарные операторы

Унарные операторы применяются к одному операнду. Вот некоторые унарные операторы:

  • + - Преобразует операнд в число
  • - - Преобразует операнд в отрицательное число
  • ++ - Инкремент
  • -- - Декремент
  • ! - Логическое НЕ
  • typeof - Возвращает тип операнда
  • void - Возвращает undefined
  • delete - Удаляет свойство объекта
let x = 5;

let positive = +x; // 5
let negative = -x; // -5
let increment = ++x; // 6
let decrement = --x; // 5
let not = !x; // false
let type = typeof x; // number
let undefinedValue = void x; // undefined

let object = { name: "John", age: 30 };
delete object.name; // true

console.log(object); // { age: 30 }

Операторы отношения

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

  • in - Возвращает true, если указанное свойство существует в объекте
  • instanceof - Возвращает true, если объект является экземпляром класса
const object = { name: "John", age: 30 };

const hasName = "name" in object; // true

const date = new Date();
const isDate = date instanceof Date; // true

Строковые операторы

В дополнение к операторам сравнения, которые могут использоваться со строковыми значениями, оператор (+) позволяет объединить две строки, возвращая при этом третью строку, которая представляет собой объединение двух строк-операндов:

const result = "Hello," + " " + "world!";
console.log(result); // Hello, world!

let firstName = "John";
let lastName = "Doe";

let fullName = firstName + " " + lastName;
console.log(fullName); // John Doe

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

Приоритет операторов определяет порядок их выполнения при вычислении выражения. Вы можете влиять на приоритет операторов с помощью скобок.

Приведённая ниже таблица описывает приоритет операторов от наивысшего до низшего.

Тип оператораОператоры
Свойство объекта. []
Вызов, создание экземпляра объекта() new
Отрицание, инкремент! ~ - + ++ -- typeof void delete
Умножение, деление* / %
Сложение, вычитание+ -
Побитовый сдвиг<< >> >>>
Сравнение, вхождение< <= > >= in instanceof
Равенство== != === !==
Битовое-и&
Битовое-исключающее-или^
Битовое-или|
Логическое-и&&
Логическое-или||
Условный (тернарный) оператор?:
Присваивание= += -= *= /= %= <<= >>= >>>= &= ^= |=
Запятая,