--- title: Операторы присваивания slug: >- conflicting/Web/JavaScript/Reference/Operators_8d54701de06af40a7c984517cbe87b3e tags: - JavaScript - Оператор translation_of: Web/JavaScript/Reference/Operators#Assignment_operators translation_of_original: Web/JavaScript/Reference/Operators/Assignment_Operators original_slug: Web/JavaScript/Reference/Operators/Assignment_Operators ---
{{jsSidebar("Operators")}}

Оператор присваивания присваивает левому операнду значение, основанное на значении правого операнда.

Описание

Основной оператор присваивания - это знак равно (=), он и присваивает значение правого операнда, левому. То есть - x = y присваивает значение переменной y, переменной x. Другие операторы присваивания, как следует из приведенной ниже таблицы с определениями и примерами, являются сокращениями стандартных операций.

Имя Сокращенный оператор Смысл
Присваивание 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

Присваивание

Простой оператор присваивания, который задает значение переменной. Цепочка операторов присваивания может быть использована для назначения нескольким переменным одного и того же значения. Смотрите пример.

Синтаксис

Оператор: x = y

Примеры

// Например, следующие переменные:
//  x = 5
//  y = 10
//  z = 25

x = y     // x - 10
x = y = z // x, y и z все равны 25

Присваивание со сложением

Оператор добавочного присваивания, добавляет значение правого операнда к значению левого, и сохраняет результат в переменную левого операнда. Типы значений обоих операндов, определяют поведение оператора добавочного присваивания. Возможны сложение и конкатенация. Смотрите {{jsxref("Operators/Arithmetic_Operators", "addition operator", "#Addition", 1)}} для подробностей.

Синтаксис

Оператор: x += y
Значение: x = x + y

Примеры

// Например, следующие переменные:
//  foo = "foo"
//  bar = 5
//  baz = true

// Результат исполнения каждого нижеприведенного примера
// представлен в изоляции от предыдущих примеров (как если
// бы значения переменных foo, bar, baz возвращались на
// первоначальные)

// Number + Number -> сложение
bar += 2 // 7

// Boolean + Number -> сложение
baz += 1 // 2

// Boolean + Boolean -> сложение
baz += false // 1

// Number + String -> конкатенация
bar += "foo" // "5foo"

// String + Boolean -> конкатенация
foo += false // "foofalse"

// String + String -> конкатенация
foo += "bar" // "foobar"

Присваивание с вычитанием

Оператор вычитаемого присваивания вычитает значение правого операнда из значения левого, и присваивает результат переменной левого операнда. Смотрите {{jsxref("Operators/Arithmetic_Operators", "subtraction operator", "#Subtraction", 1)}} для подробностей.

Синтаксис

Оператор: x -= y
Значение:  x  = x - y

Примеры

// Например, следующие переменные:
//  bar = 5

bar -= 2     // 3
bar -= "foo" // NaN

Присваивание с умножением

The multiplication assignment operator multiplies a variable by the value of the right operand and assigns the result to the variable. See the {{jsxref("Operators/Arithmetic_Operators", "multiplication operator", "#Multiplication", 1)}} for more details.

Синтаксис

Оператор: x *= y
Значение:  x  = x * y

Примеры

// Assuming the following variable
//  bar = 5

bar *= 2     // 10
bar *= "foo" // NaN

Присваивание с делением

The division assignment operator divides a variable by the value of the right operand and assigns the result to the variable. See the {{jsxref("Operators/Arithmetic_Operators", "division operator", "#Division", 1)}} for more details.

Синтаксис

Оператор: x /= y
Значение:  x  = x / y

Примеры

// Assuming the following variable
//  bar = 5

bar /= 2     // 2.5
bar /= "foo" // NaN
bar /= 0     // Infinity

Присваивание по модулю

The remainder assignment operator divides a variable by the value of the right operand and assigns the remainder to the variable. See the {{jsxref("Operators/Arithmetic_Operators", "remainder operator", "#Remainder", 1)}} for more details.

Синтаксис

Оператор: x %= y
Значение:  x  = x % y

Примеры

// Assuming the following variable
// bar = 5

bar %= 2     // 1
bar %= "foo" // NaN
bar %= 0     // NaN

Присваивание с левым сдвигом

The left shift assignment operator moves the specified amount of bits to the left and assigns the result to the variable. See the {{jsxref("Operators/Bitwise_Operators", "left shift operator", "#Left_shift", 1)}} for more details.

Синтаксис

Оператор: x <<= y
Значение:  x   = x << y

Примеры

var bar = 5; //  (00000000000000000000000000000101)
bar <<= 2; // 20 (00000000000000000000000000010100)

Присваивание с правым сдвигом

The right shift assignment operator moves the specified amount of bits to the right and assigns the result to the variable. See the {{jsxref("Operators/Bitwise_Operators", "right shift operator", "#Right_shift", 1)}} for more details.

Синтаксис

Оператор: x >>= y
Значение:  x   = x >> y

Примеры

var bar = 5; //   (00000000000000000000000000000101)
bar >>= 2;   // 1 (00000000000000000000000000000001)

var bar -5; //    (-00000000000000000000000000000101)
bar >>= 2;  // -2 (-00000000000000000000000000000010)

Присваивание с беззнаковым сдвигом вправо

The unsigned right shift assignment operator moves the specified amount of bits to the right and assigns the result to the variable. See the {{jsxref("Operators/Bitwise_Operators", " unsigned right shift operator", "#Unsigned_right_shift", 1)}} for more details.

Синтаксис

Оператор: x >>>= y
Значение:  x    = x >>> y

Примеры

var bar = 5; //   (00000000000000000000000000000101)
bar >>>= 2;  // 1 (00000000000000000000000000000001)

var bar = -5; // (-00000000000000000000000000000101)
bar >>>= 2; // 1073741822 (00111111111111111111111111111110)

Присваивание с побитовым AND

The bitwise AND assignment operator uses the binary representation of both operands, does a bitwise AND operation on them and assigns the result to the variable. See the {{jsxref("Operators/Bitwise_Operators", "bitwise AND operator", "#Bitwise_AND", 1)}} for more details.

Синтаксис

Оператор: x &= y
Значение:  x  = x & y

Примеры

var bar = 5;
// 5:     00000000000000000000000000000101
// 2:     00000000000000000000000000000010
bar &= 2; // 0

Присваивание с побитовым XOR

Побитовый оператор присваивания XOR использует двоичное представление обоих операндов, выполняет побитовую XOR-операцию и присваивает результат переменной. Для получения более подробной информации см. {{jsxref("Operators/Bitwise_Operators", "Побитовый оператор XOR", "#Bitwise_XOR", 1)}}.

Синтаксис

Оператор: x ^= y
Значение:  x  = x ^ y

Примеры

var bar = 5;
bar ^= 2; // 7
// 5: 00000000000000000000000000000101
// 2: 00000000000000000000000000000010
// -----------------------------------
// 7: 00000000000000000000000000000111

Присваиванием с побитовым OR

Побитовый оператор присваивания OR использует двоичное (бинарное) представление обоих операндов, выполняет побитовое ИЛИ для них и присваивает результат переменной. Дополнительную информацию см. {{jsxref("Operators/Bitwise_Operators", "Побитовый оператор OR", "#Bitwise_OR", 1)}}.

Синтаксис

Оператор: x |= y
Значение:  x  = x | y

Примеры

var bar = 5;
bar |= 2; // 7
// 5: 00000000000000000000000000000101
// 2: 00000000000000000000000000000010
// -----------------------------------
// 7: 00000000000000000000000000000111

Примеры

Левый операнд с другим оператором присваивания

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

a[i++] += 5         // i оценивается только один раз
a[i++] = a[i++] + 5 // i оценивается дважды

Спецификации

Спецификация Статус Комментарий
ECMAScript 1-е издание. Стандарт Изначальное определение.
{{SpecName('ES5.1', '#sec-11.13', 'Операторы присваивания')}} {{Spec2('ES5.1')}}  
{{SpecName('ES6', '#sec-assignment-operators', 'Операторы присваивания')}} {{Spec2('ES6')}}  

Совместимость с браузерами

{{ CompatibilityTable() }}

Возможность Chrome Firefox (Gecko) Internet Explorer Opera Safari
Базовая поддержка {{ CompatVersionUnknown() }} {{ CompatVersionUnknown() }} {{ CompatVersionUnknown() }} {{ CompatVersionUnknown() }} {{ CompatVersionUnknown() }}
Возможность Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Базовая поддержка {{ CompatVersionUnknown() }} {{ CompatVersionUnknown() }} {{ CompatVersionUnknown() }} {{ CompatVersionUnknown() }} {{ CompatVersionUnknown() }} {{ CompatVersionUnknown() }}

Смотрите также