--- title: Оператори присвоєння slug: >- conflicting/Web/JavaScript/Reference/Operators_1cd48548c16282df3883f99267726c3e 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/Оператори_присвоєння ---
Оператор присвоєння присвоює своєму лівому операнду значення, на підставі значення правого операнду.
{{EmbedInteractiveExample("pages/js/expressions-assignment.html")}}
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Базовим оператором присвоєння є оператор дорівнює (=
), який присвоює значення свого правого операнда лівому операнду. Таким чином, x = y
присвоює змінній x
значення змінної y
. Інші оператори присвоєння у своїй більшості є скороченнями для стандарних операцій, як це вказано у наступній таблиці з визначеннями та прикладами.
Назва | Оператор скороченого запису | Значення |
---|---|---|
Присвоєння | 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 |
Присвоєння з беззнаковим правим зсувом | x >>>= y |
x = x >>> y |
Присвоєння з побітовим І | x &= y |
x = x & y |
Присвоєння з виключним побітовим АБО | x ^= y |
x = x ^ y |
Присвоєння з побітовим АБО | 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", 1)}}.
Оператор: x += y Значення: x = x + y
// Розглянемо такі змінні: // foo = 'foo' // bar = 5 // baz = true // число + число -> додавання bar += 2 // 7 // булеве значення + число -> додавання baz += 1 // 2 // булеве значення + булеве значення -> додавання baz += false // 1 // число + рядок -> конкатенація bar += 'foo' // "5foo" // рядок + булеве значення -> конкатенація foo += false // "foofalse" // рядок + рядок -> конкатенація foo += 'bar' // "foobar"
Оператор присвоєння з відніманням віднімає значення правого операнду від змінної (лівого перанду) та записує у неї отриманий результат. Дивіться {{jsxref("Operators/Arithmetic_Operators", "оператор віднімання", "#Subtraction", 1)}} для більш детального огляду.
Оператор: x -= y Значення: x = x - y
// Розглянемо такі змінні: // bar = 5 bar -= 2 // 3 bar -= 'foo' // NaN
Оператор присвоєння з множенням помножує змінну (лівий операнд) на значення правого операнду та записує отриманий результат у змінну. Дивіться {{jsxref("Operators/Arithmetic_Operators", "оператор множення", "#Multiplication", 1)}} для більш детального огляду.
Оператор: x *= y Значення: x = x * y
// Розглянемо такі змінні: // bar = 5 bar *= 2 // 10 bar *= 'foo' // NaN
Оператор присвоєння з діленням ділить змінну (лівий операнд) на значення правого операнду та записує отриманий результат у змінну. Дивіться {{jsxref("Operators/Arithmetic_Operators", "оператор ділення", "#Division", 1)}} для більш детального огляду.
Оператор: x /= y Значення: x = x / y
// Розглянемо такі змінні: // bar = 5 bar /= 2 // 2.5 bar /= 'foo' // NaN bar /= 0 // Infinity
Оператор присвоєння остачі ділить змінну на значення правого операнду та присвоює остачу змінній. Дивіться {{jsxref("Operators/Arithmetic_Operators", "оператор остачі", "#Remainder", 1)}} для більш детального огляду.
Оператор: x %= y Значення: x = x % y
// Розглянемо такі змінні: // bar = 5 bar %= 2 // 1 bar %= 'foo' // NaN bar %= 0 // NaN
Оператор присвоєння з піднесенням до степеня обчислює результат піднесення першого операнду до показника степеня другого операнду. Дивіться {{jsxref("Operators/Arithmetic_Operators", "оператор піднесення до степеня", "#Exponentiation", 1)}} для більш детального огляду.
Оператор: x **= y Значення: x = x ** y
// Розглянемо такі змінні: // bar = 5 bar **= 2 // 25 bar **= 'foo' // NaN
Оператор присвоєння з лівим зсувом виконує зсув першого операнду на вказану кількість бітів ліворуч та присвоює результат у змінну. Дивіться {{jsxref("Operators/Bitwise_Operators", "оператор лівого зсуву", "#Left_shift", 1)}} для більш детального огляду.
Оператор: x <<= y Значення: x = x << y
var bar = 5; // (00000000000000000000000000000101) bar <<= 2; // 20 (00000000000000000000000000010100)
Оператор присвоєння з правим зсувом виконує зсув першого операнду на вказану кількість бітів праворуч та присвоює результат у змінну. Дивіться {{jsxref("Operators/Bitwise_Operators", "оператор правого зсуву", "#Right_shift", 1)}} для більш детального огляду.
Оператор: x >>= y Значення: x = x >> y
var bar = 5; // (00000000000000000000000000000101) bar >>= 2; // 1 (00000000000000000000000000000001) var bar -5; // (-00000000000000000000000000000101) bar >>= 2; // -2 (-00000000000000000000000000000010)
Оператор присвоєння з беззнаковим правим зсувом виконує зсув першого операнду на вказану кількість бітів праворуч та присвоює результат змінній. Дивіться {{jsxref("Operators/Bitwise_Operators", " оператор беззнакового правого зсуву", "#Unsigned_right_shift", 1)}} для більш детального огляду.
Оператор: x >>>= y Значення: x = x >>> y
var bar = 5; // (00000000000000000000000000000101) bar >>>= 2; // 1 (00000000000000000000000000000001) var bar = -5; // (-00000000000000000000000000000101) bar >>>= 2; // 1073741822 (00111111111111111111111111111110)
Оператор присвоєння з побітовим І використовує двійкове представлення обох операндів, виконує над ними операцію побітового І та присвоює результат змінній. Дивіться {{jsxref("Operators/Bitwise_Operators", "оператор побітового І", "#Bitwise_AND", 1)}} для більш детального огляду.
Оператор: x &= y Значення: x = x & y
var bar = 5; // 5: 00000000000000000000000000000101 // 2: 00000000000000000000000000000010 bar &= 2; // 0
Оператор присвоєння з виключним побітовим АБО використовує двійкове представлення обох операндів, виконує над ними операцію виключного побітового АБО (XOR) та присвоює результат змінній. Дивіться {{jsxref("Operators/Bitwise_Operators", "оператор виключного побітового АБО", "#Bitwise_XOR", 1)}} для більш детального огляду.
Оператор: x ^= y Значення: x = x ^ y
var bar = 5; bar ^= 2; // 7 // 5: 00000000000000000000000000000101 // 2: 00000000000000000000000000000010 // ----------------------------------- // 7: 00000000000000000000000000000111
Оператор присвоєння з побітовим АБО використовує двійкове представлення обох операндів, виконує над ними операцію побітового АБО та присвоює результат змінній. Дивіться {{jsxref("Operators/Bitwise_Operators", "оператор побітового АБО", "#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 обчислюється двічі
Специфікація | Статус | Коментар |
---|---|---|
{{SpecName('ESDraft', '#sec-assignment-operators', 'Assignment operators')}} | {{Spec2('ESDraft')}} | |
{{SpecName('ES2015', '#sec-assignment-operators', 'Assignment operators')}} | {{Spec2('ES2015')}} | |
{{SpecName('ES5.1', '#sec-11.13', 'Assignment operators')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES1', '#sec-11.13', 'Assignment operators')}} | {{Spec2('ES1')}} | Початкове визначення. |
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
{{Compat("javascript.operators.assignment")}}