Простое присваивание в JavaScript выполняется с помощью знака равенства =
, при этом значение справа от него просто присваивается переменной слева. Наряду с простым присваванем в JavaScript широко используется, так называемое составное присваивание, которое осуществляется с помощью одного из арифметических операторов или операторов сдвига, за которым следует знак равенства.
Описание
Основной оператор присваивания – это знак равно =, он и присваивает значение правого операнда, левому. Левым операндом оператора = должна быть переменная, элемент массива или свойство объекта. Правым операндом может быть значение любого типа.
Кроме простого оператора присваивания =, в JavaScript определены несколько дополнительных операторов, являющихся, как следует из приведенной ниже таблицы, сокращенными обозначениями двух операций: присваивания и одной из арифметических операций.
Оператор | Описание | Пример | Равнозначная операция |
---|---|---|---|
= | Присваивание | 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 |
&= | Присваивание с побитовым AND | x &= y | x = x & y |
^= | Присваивание с побитовым XOR | x ^= y | x = x ^ y |
|= | Присваивание с побитовым OR | x |= y | x = x | y |
Простое присваивание
Простое присваивание выполняется с помощью операнда равенства =, при этом значение справа от него присваивается переменной слева:
var x = 20;
Обратим внимание, что согласно таблицы приоритетов
оператор присваивания = имеет один из самых низких приоритетов: 3.
Именно поэтому, когда переменной присваивается какое-либо выражение, например, x = 5 + 7 * 3
, то сначала выполнятся арифметические операции справа, а затем – произойдёт присваивание полученного результата пременной x
.
Операторы присваивания можно объединять в цепочки для того, чтобы присвоить одно и то же значение сразу нескольким переменным:
В примере операция присваивания работает справа-налево в следующем порядке:
- сначала вычислятся правое выражение
5+5
; - полученный результат присваивается в переменную
c
; - переменная
с
присваивается переменнойb
, т.е.b = c
; - и, наконец, переменная
b
присваивается переменнойa
, т.е.a = b
.
Присваивание со сложением
Оператор присваивания со сложением, прибавляет значение правого операнда к значению левого, и сохраняет результат в переменную левого операнда. Оператор +=
работает и с числами, и со строками. Для числовых операндов он выполняет сложение и присваивание, а для строковых – конкатенацию и присваивание:
Сокращённые операторы
Аналогично оператору +=
работают операторы -=,*=,/=,%=
и бинарные <<=,>>=,>>>=,&=,|=,^=
.
Сокращённые операторы только сокращают объём кода, но не увеличивают его быстродействие.
Итоги
- Левым операндом оператора = должна быть переменная, элемент массива или свойство объекта.
- Оператор присваивания = имеет один из самых низких приоритетов, поэтому сначала выполнятся арифметические операции справа, а затем произойдёт присваивание.
- Операторы присваивания можно объединять в цепочки, благодаря чему можно присвоить одно и то же значение сразу нескольким переменным.
- Операторы составного присваивания объединяют в себе один из арифметических операторов или операторов сдвига и знак равенства, сокращая тем самым объём кода.
Задачи
-
Присваивание со сложением
Как вы думаете, какое значение будет иметь переменная
а
после выполнения приведенных ниже выражений?var b = 1, c; var а = b += с = 5; document.write( a );
Решение:
Вы уже знаете, что присваивание работает справа налево. Сначала переменная
c
принимает значение 5. Далее к ней добавляется значение переменнойb
и, наконец, полученный результат, присваивается переменнойa
. Ответ 6.-
Составное присваивание
Чему будет равно значение переменной
d
в примере ниже?var a = 2, b = 3, c; var d = a *= c += b ; document.write( d );
-
Присваивание по модулю
Используйте оператор присваивание по модулю
%=
для взятия остатка от деленияa
наb
и возврата результата в переменнуюa
.Решение:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Присваивание по модулю</title> </head> <body> <script> var a = 8, b = 3; a %= b; document.write( a ); // 2 </script> </body> </html>
-
Присваивание с делением
Используйте оператор присваивание с делением
/=
для получения результата от деленияa
наb
и возврата его в переменнуюa
.Решение:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Присваивание по модулю</title> </head> <body> <p id="demo"></p> <script> var a = 9, b = 3; a /= b; document.getElementById("demo").innerHTML = a; // 3 </script> </body> </html>
-
-
Комментарии
<code>
, несколько строчек кода — в теги<pre><code>
...ваш код...</code></pre>
.