Операторы - это математические символы и/или определённые слова, позволяющие оперировать (совершать действия) с переменными - складывать, вычитать, присваивать, сравнивать, отрицать и так далее. Так же есть операторы, которые управляют программой.
Оператор | Значение | Пример |
Арифметические операторы | ||
+ | Сложение чисел или текстовых строк. Числа так же могут быть представлены в виде переменных, которые их содержат. |
a = 1 + 2 a = a + 2 var Tx = "text1" + "text2" |
- | Выполняет вычитание второго числа из первого. | a = 2 - 1 |
/ | Выполняет деление первого числа на второе. | a = 4 / 2 |
* | Выполняет умножение чисел. | a = 2 * 2 |
** | Возведение в степень. Значение, расположенное слева, возводится в степень, указанную в правом значении. Если значение слева отрицательное, его необходимо указывать в скобках. |
5 ** 3 (результат: 125) (-5) ** 3 (результат: -125) |
% | Возвращает целый остаток деления. Результатом выражения в примере, приведённом справа, будет 5. |
45 % 8 |
Операторы присваивания | ||
= | Выполняет функцию присвоения. Обратите внимание: это не математический знак равенства, а оператор присвоения, который присваивает переменной слева значение, стоящее (или получаемое) справа. |
var Text = 'Текст' a = 1 + 2 |
+= |
Присваивание со сложением. Значение переменной слева суммируется со значением (или значением переменной) справа и присваивается переменной слева. Соответственно, слева может находится только переменная, а не число. Данный оператор так же может быть использован для сложения двух строк (так же, как и "+"). |
a += 10 тоже самое, что и a = a + 10 |
-= | Вычитание с присвоением. Из значения переменной слева вычитается значение (или значение переменной) справа и присваивается переменной слева. Соответственно, слева может находится только переменная, а не число. |
a -= 10 тоже самое, что и a = a - 10 |
*= | Присваивание с умножением. Значение переменной слева умножается на значение (или значение переменной) справа и присваивается переменной слева. Соответственно, слева может находится только переменная, а не число. |
a *= 10 тоже самое, что и a = a * 10 |
/= | Деление с присвоением. Значение переменной слева делится на значение (или значение переменной) справа и присваивается переменной слева. Соответственно, слева может находится только переменная, а не число. |
a /= 10 тоже самое, что и a = a / 10 |
%= | Присваивание по модулю. Значение переменной слева делится на значение (или значение переменной) справа, после чего переменной слева присваивается целый остаток от деления. В примере справа переменная a получит значение 5. |
var a = 40 a %= 8 |
Деструктурирующее присваивание | ||
Эта тема подробно рассмотрена в главе "Деструктурирующее присваивание" | ||
Операторы равенства | ||
== | Сравнение с преобразованием операндов. Могут сравниваться значения разных типов; при необходимости значения могут быть преобразованы в один тип*. В приведённом примере значение будет преобразовано в общий тип, затем произведено сравнение; результат сравнения - true. |
a = 25 b = "25" a == b |
=== | Строгое сравнение. Сравнивает два значения строго одного типа*. Если значения равны, возвращается true, если неравны - false. | a === b |
!= |
Оператор нестрогого сравнения и отрицания. Работает так же, как и оператор сравнения с преобразованием операндов, но полученное значение меняется на противоположное. В примере справа значения равны, но результат выражения - false. |
"25" != 25 |
!== |
Оператор строгого сравнения и отрицания. Данный оператор сравнивает два значения строго одного типа и затем меняет результат на противоположный. В примере справа во второй строке производится сначала сравнение значения переменной Age, расположенной слева, с числом 25, расположенным справа; несмотря на то, что значения равны, в результате будет получено значение false, так как применён оператор отрицания !. |
1 Age = 25; |
Оператор отрицания | ||
! |
Оператор отрицания. Возвращает обратное значение. В примере, приведённом справа, выражение в строке 2 выдаст значение false, так значение, полученное в скобках - true. |
1 var Age = 25; |
Операторы сравнения | ||
> | Выдаёт значение true если значение слева больше, чем значение справа. | a > b |
>= | Выдаёт значение true если значение слева больше или равно значению справа. | a >= b |
< | Выдаёт значение true если значение слева меньше, чем значение справа. | a < b |
<= | Выдаёт значение true если значение слева меньше или равно значению справа. | a <= b |
Инкремент и декремент | ||
++ |
Инкремент. Если ++ идёт перед операндом, то возвращается значение, увеличенное на единицу, а так же увеличивается значение самого операнда. Результатом примера 1 будет a=11, b=11, т.е. переменная b получит увеличенное значение (11), а так же сам операнд (а) будет увеличен на единицу. ------------------------- Если ++ идёт после операнда, то сначала возвращается значение самого операнда, а затем операнд увеличивается на единицу. Результатом примера 2 будет a=10, b=11; т.е. переменная b получит изначальное значение операнда (10), а сам операнд будет увеличен на единицу. |
Пример 1.
// Результат: // a = 11, b = 11 ---------------- Пример 2.
// Результат: // a = 11, b = 10 |
-- |
Декремент. Если -- идёт перед операндом, то возвращается значение, уменьшенное на единицу, а так же уменьшается значение самого операнда. Результатом примера 1 будет a=9, b=9, т.е. переменная b получит уменьшенное значение (9), а так же сам операнд (а) будет уменьшен на единицу. ------------------------- Если -- идёт после операнда, то сначала возвращается значение самого операнда, а затем операнд уменьшается на единицу. Результатом примера 2 будет a=10, b=9; т.е. переменная b получит изначальное значение операнда (10), а вот сам операнд будет уменьшен на единицу. |
Пример 1.
// Результат: // a = 9, b = 9 ---------------- Пример 2.
// Результат: // a = 9, b = 10 |
Унарный "плюс" | ||
+ | Унарный + устанавливается перед операндом и преобразовывает его в число. |
a = +"8" b = +false // Результат: //a = 8, b = 0 |
Унарный "минус" | ||
- | Унарный - , поставленный в выражении перед операндом, возвращает его отрицательное значение, не меняя при этом значение самого операнда (см. пример справа). |
a = 10 b = -a // Результат: //a = 10, b = -10 |
Логические операторы | ||
&& |
Логическое "и". Возвращает значение первого операнда (a1) если его можно преобразовать в "false"; если же этого сделать нельзя, то будет возвращёно значение второго операнда. Например, если первый операнд является текстом, то его нельзя преобразовать в "false"; соответственно, будет возвращено значение второго операнда. |
a1 && b1 |
|| |
Логическое "или". Возвращает значение первого операнда (a1) если его можно преобразовать в "true"; если же этого сделать нельзя, то будет возвращёно значение второго операнда. Например, если первый операнд является текстом, то его можно преобразовать в "true"; соответственно, будет возвращено значение первого операнда.
|
a1 || b1 |
! |
Логическое "не". Меняет значение "true" на "false" и наоборот. |
!"текст" // вернёт "false" |
Тернарный оператор | ||
? : |
Выбирает значение в зависимости от условия. Синтаксис: (Условие) ? ЗначениеА : ЗначениеВ Если заданное условие выполняется, то принимается ЗначениеА, если не выполняется - ЗначениеВ. |
1 a = 25; // b получит значение 1 |
Операторы отношения | ||
in |
Синтаксис: Свойство in Объект Проверяет наличие указанного в выражении Свойства в Объекте. Если такое свойство есть, возвращает значение "true". В качестве Свойства могут быть так же указаны и индексы массива (но не значения этих индексов!). |
|
instanceof |
Синтаксис: Объект instanceof ТипОбъекта Проверяет соответствие указанного в выражении объекта указанному типу. Если тип соответствует, будет возвращено значение "true". |
|
Унарные операторы | ||
delete |
Удаляет объекты, свойства, элементы массива (указывается индекс). Стоит иметь в виду, что данный оператор может удалять переменные и объекты, только объявленные неявно. При применении оператора свойство меняется на undefined. Оператор возвращает "true", если операция возможна и "false" - если невозможна. |
|
typeof |
Данный оператор возвращает тип операнда. Операнд может быть подставлен в скобках или без них (см. примеры). Важно:
|
var a = typeof 10; var b = typeof ("text") |
void | Определяет выражение, которое должно быть вычислено без результата. | var A = void (выражение) |
----------------------------------------------
* Правила сравнения
- При сравнении числа и строки числовое значение в строке преобразуется в число.
- Сравнение двух разных объектов всегда даёт false.
- Значение false приравнивается к 0, значение true - к 1.
- При сравнении объекта с числом или строкой JS получает значение для этого объекта, преобразует его при помощи методов toString и valueOf (если это возможно).
Приоритет операторов
При составлении кода очень важно знать приоритет операторов, т.е. порядок выполнения действий в заданном выражении. Ниже приведена таблица, показывающая этот приоритет от самого высокого, т.е. действий, которые будут выполнены в первую очередь, к самым низким.
Тип |
Порядок обработки (ассоциативность) |
Оператор | |
20 | Группировка | ( ) | |
19 | Доступ к свойствам | . | |
Доступ к свойствам | [ ] | ||
New (новый объект) | new Объект(***) | ||
Вызовы функций | *** (***) | ||
18 | New (без аргументов) | new *** | |
17 | Постфиксный инкремент и декремент | х++ и х-- | |
16 | Логическое отрицание | ! | |
Побитовое отрицание | ~ | ||
Унарный плюс | + | ||
Унарный минус | - | ||
Префиксный инкремент и декремент | ++x и --x | ||
typeof | typeof | ||
void | void | ||
delete | delete | ||
await | await | ||
15 | Операция возведения в степень | ** | |
14 | Умножение | * | |
Деление | / | ||
Целый остаток деления | % | ||
13 | Сложение | + | |
Вычитание | - | ||
12 | Побитовый сдвиг влево | << | |
Побитовый сдвиг вправо | >> | ||
Сдвиг вправо с заполнением нулей | >>> | ||
11 | Меньше, меньше или равно | < <= | |
Больше, больше или равно | > >= | ||
in | in | ||
instanceof | instanceof | ||
10 | Сравнение | == | |
Сравнение и отрицание | != | ||
Строгое сравнение | === | ||
Строгое сравнение и отрицание | !== | ||
9 | Побитовое И | & | |
8 | Побитовое исключающее ИЛИ | ^ | |
7 | Побитовое ИЛИ | | | |
6 | Логическое И | && | |
5 | Логическое ИЛИ | || | |
4 | Тернарный оператор | ? : | |
3 | Присваивание | все варианты | |
2 | yield | yield | |
yield* | yield* | ||
1 | Запятая, последовательность | , | |
Обозначения: Выполнение слева направо Выполнение справа на налево Не определено |
Будьте предельно внимательны при работе с переменными разных типов!