Оператори присвоєння

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

Огляд

Базовим оператором присвоєння є оператор дорівнює (=), який присвоює значення свого правого операнда лівому операнду. Таким чином, 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

Присвоєння з додаванням

Оператор присвоєння з додаванням додає значення правого операнду до змінної (лівого перанду) та записує у неї отриманий результат. Типи двох операндів визначають поведінку оператора. Таким чином, його результатом може стати або додавання або конкатенація. Для більш детального огляду дивіться оператор додавання.

Синтаксис

Оператор:  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"

Присвоєння з відніманням

Оператор присвоєння з відніманням віднімає значення правого операнду від змінної (лівого перанду) та записує у неї отриманий результат. Дивіться оператор віднімання для більш детального огляду.

Синтаксис

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

Приклади

// Розглянемо такі змінні:
//  bar = 5

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

Присвоєння з множенням

Оператор присвоєння з множенням помножує змінну (лівий операнд) на значення правого операнду та записує отриманий результат у змінну. Дивіться оператор множення для більш детального огляду.

Синтаксис

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

Приклади

// Розглянемо такі змінні:
//  bar = 5

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

Присвоєння з діленням

Оператор присвоєння з діленням ділить змінну (лівий операнд) на значення правого операнду та записує отриманий результат у змінну. Дивіться оператор ділення для більш детального огляду.

Синтаксис

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

Приклади

// Розглянемо такі змінні:
//  bar = 5

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

Присвоєння остачі

Оператор присвоєння остачі ділить змінну на значення правого операнду та присвоює остачу змінній. Дивіться оператор остачі для більш детального огляду.

Синтаксис

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

Приклади

// Розглянемо такі змінні:
//  bar = 5

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

Присвоєння з піднесенням до степеня

Оператор присвоєння з піднесенням до степеня обчислює результат піднесення першого операнду до показника степеня другого операнду. Дивіться оператор піднесення до степеня для більш детального огляду.

Синтаксис

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

Приклади

// Розглянемо такі змінні:
//  bar = 5

bar **= 2     // 25
bar **= 'foo' // NaN

Присвоєння з лівим зсувом

Оператор присвоєння з лівим зсувом виконує зсув першого операнду на вказану кількість бітів ліворуч та присвоює результат у змінну. Дивіться оператор лівого зсуву для більш детального огляду.

Синтаксис

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

Приклади

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

Присвоєння з правим зсувом

Оператор присвоєння з правим зсувом виконує зсув першого операнду на вказану кількість бітів праворуч та присвоює результат у змінну. Дивіться оператор правого зсуву для більш детального огляду.

Синтаксис

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

Приклади

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

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

Присвоєння з беззнаковим правим зсувом

Оператор присвоєння з беззнаковим правим зсувом виконує зсув першого операнду на вказану кількість бітів праворуч та присвоює результат змінній. Дивіться оператор беззнакового правого зсуву для більш детального огляду.

Синтаксис

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

Приклади

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

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

Присвоєння з побітовим І

Оператор присвоєння з побітовим І використовує двійкове представлення обох операндів, виконує над ними операцію побітового І та присвоює результат змінній. Дивіться оператор побітового І для більш детального огляду.

Синтаксис

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

Приклади

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

Присвоєння з виключним побітовим АБО

Оператор присвоєння з виключним побітовим АБО використовує двійкове представлення обох операндів, виконує над ними операцію виключного побітового АБО (XOR) та присвоює результат змінній. Дивіться оператор виключного побітового АБО для більш детального огляду.

Синтаксис

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

Приклади

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

Присвоєння з побітовим АБО

Оператор присвоєння з побітовим АБО використовує двійкове представлення обох операндів, виконує над ними операцію побітового АБО та присвоює результат змінній. Дивіться оператор побітового АБО для більш детального огляду.

Синтаксис

Оператор:  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 Latest Draft (ECMA-262)
The definition of 'Assignment operators' in that specification.
Draft
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Assignment operators' in that specification.
Standard
ECMAScript 5.1 (ECMA-262)
The definition of 'Assignment operators' in that specification.
Standard
ECMAScript 1st Edition (ECMA-262)
The definition of 'Assignment operators' in that specification.
Standard Початкове визначення.

Сумісність з веб-переглядачами

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
Addition assignment (x += y)Chrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 3Opera Full support 3Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support Yes
Bitwise AND assignment (x &= y)Chrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 3Opera Full support 3Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support Yes
Bitwise OR assignment (x |= y)Chrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 3Opera Full support 3Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support Yes
Bitwise XOR assignment (x ^= y)Chrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 3Opera Full support 3Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support Yes
Division assignment (x /= y)Chrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 3Opera Full support 3Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support Yes
Exponentiation assignment (x **= y)Chrome Full support 52Edge Full support 14Firefox Full support 52IE No support NoOpera Full support 39Safari Full support 10.1WebView Android Full support 51Chrome Android Full support 52Firefox Android Full support 52Opera Android Full support 41Safari iOS Full support 10.3Samsung Internet Android Full support 6.0nodejs Full support 7.0.0
Full support 7.0.0
Full support 6.5.0
Disabled
Disabled From version 6.5.0: this feature is behind the --harmony runtime flag.
Left shift assignment (x <<= y)Chrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 3Opera Full support 4Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support Yes
Multiplication assignment (x *= y)Chrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 3Opera Full support 3Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support Yes
Remainder assignment (x %= y)Chrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 3Opera Full support 4Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support Yes
Right shift assignment (x >>= y)Chrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 3Opera Full support 4Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support Yes
Assignment (x = y)Chrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 3Opera Full support 3Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support Yes
Subtraction assignment (x -= y)Chrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 3Opera Full support 3Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support Yes
Unsigned right shift assignment (x >>>= y)Chrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 3Opera Full support 4Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support Yes

Legend

Full support  
Full support
No support  
No support
User must explicitly enable this feature.
User must explicitly enable this feature.

Див. також