--- 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 ---
Оператор присваивания присваивает левому операнду значение, основанное на значении правого операнда.
Основной оператор присваивания - это знак равно (=
), он и присваивает значение правого операнда, левому. То есть - 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)
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-операцию и присваивает результат переменной. Для получения более подробной информации см. {{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 использует двоичное (бинарное) представление обоих операндов, выполняет побитовое ИЛИ для них и присваивает результат переменной. Дополнительную информацию см. {{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() }} |