Простое присваивание в JavaScript выполняется с помощью знака равенства =, при этом значение справа от него просто присваивается переменной слева. Наряду с простым присваванем в JavaScript широко используется, так называемое составное присваивание, которое осуществляется с помощью одного из арифметических операторов или операторов сдвига, за которым следует знак равенства.

Основной оператор присваивания – это знак равно =, он и присваивает значение правого операнда, левому. Левым операндом оператора = должна быть переменная, элемент массива или свойство объекта. Правым операндом может быть значение любого типа.

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

ОператорОписаниеПримерРавнозначная операция
=Присваиваниеx = yx = y
+=Присваивание со сложениемx += yx = x + y
-=Присваивание с вычитаниемx -= yx = x - y
*=Присваивание с умножениемx *= yx = x * y
/=Присваивание с делениемx /= yx = x / y
%=Присваивание по модулюx %= yx = x % y
<<=Присваивание с левым сдвигомx <<= yx = x << y
>>=Присваивание с правым сдвигомx >>= yx = x >> y
>>>=Присваивание с беззнаковым сдвигом вправоx >>>= yx = x >>> y
&=Присваивание с побитовым ANDx &= yx = x & y
^=Присваивание с побитовым XORx ^= yx = x ^ y
|=Присваивание с побитовым ORx |= yx = 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 ); 
    
    Показать решение

    Решение:

    Переменная c объявлена, но не инициализирована, т.е. NaN. Ответ NaN.

    Выполнить код »
  • Присваивание по модулю

    Используйте оператор присваивание по модулю %= для взятия остатка от деления 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>.
  • Допускаются ссылки на онлайн-песочницы (codepen, plnkr, JSBin и др.).