aboutsummaryrefslogtreecommitdiff
path: root/files/uk/web/javascript/reference/operators/оператори_присвоєння/index.html
blob: d69f9055d1fbe25a6ad7f29bb8c4a6fc01d93e86 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
---
title: Оператори присвоєння
slug: Web/JavaScript/Reference/Operators/Оператори_присвоєння
tags:
  - JavaScript
  - Оператор
translation_of: Web/JavaScript/Reference/Operators#Assignment_operators
---
<div>{{jsSidebar("Operators")}}</div>

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

<p>{{EmbedInteractiveExample("pages/js/expressions-assignment.html")}}</p>

<div class="hidden">
<p>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 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p>
</div>

<h2 id="Огляд">Огляд</h2>

<p>Базовим оператором присвоєння є оператор дорівнює (<code>=</code>), який присвоює значення свого правого операнда лівому операнду. Таким чином, <code>x = y</code> присвоює змінній <code>x</code> значення змінної <code>y</code>. Інші оператори присвоєння у своїй більшості є скороченнями для стандарних операцій, як це вказано у наступній таблиці з визначеннями та прикладами.</p>

<table class="standard-table">
 <tbody>
  <tr>
   <th>Назва</th>
   <th>Оператор скороченого запису</th>
   <th>Значення</th>
  </tr>
  <tr>
   <td><a href="#Присвоєння">Присвоєння</a></td>
   <td><code>x = y</code></td>
   <td><code>x = y</code></td>
  </tr>
  <tr>
   <td><a href="#Присвоєння_з_додаванням">Присвоєння з додаванням</a></td>
   <td><code>x += y</code></td>
   <td><code>x = x + y</code></td>
  </tr>
  <tr>
   <td><a href="#Присвоєння_з_відніманням">Присвоєння з відніманням</a></td>
   <td><code>x -= y</code></td>
   <td><code>x = x - y</code></td>
  </tr>
  <tr>
   <td><a href="#Присвоєння_з_множенням">Присвоєння з множенням</a></td>
   <td><code>x *= y</code></td>
   <td><code>x = x * y</code></td>
  </tr>
  <tr>
   <td><a href="#Присвоєння_з_діленням">Присвоєння з діленням</a></td>
   <td><code>x /= y</code></td>
   <td><code>x = x / y</code></td>
  </tr>
  <tr>
   <td><a href="#Присвоєння_остачі">Присвоєння остачі</a></td>
   <td><code>x %= y</code></td>
   <td><code>x = x % y</code></td>
  </tr>
  <tr>
   <td><a href="#Присвоєння_з_піднесенням_до_степеня">Присвоєння з піднесенням до степеня</a></td>
   <td><code>x **= y</code></td>
   <td><code>x = x ** y</code></td>
  </tr>
  <tr>
   <td><a href="#Присвоєння_з_лівим_зсувом">Присвоєння з лівим зсувом</a></td>
   <td><code>x &lt;&lt;= y</code></td>
   <td><code>x = x &lt;&lt; y</code></td>
  </tr>
  <tr>
   <td><a href="#Присвоєння_з_правим_зсувом">Присвоєння з правим зсувом</a></td>
   <td><code>x &gt;&gt;= y</code></td>
   <td><code>x = x &gt;&gt; y</code></td>
  </tr>
  <tr>
   <td><a href="#Присвоєння_з_беззнаковим_правим_зсувом">Присвоєння з беззнаковим правим зсувом</a></td>
   <td><code>x &gt;&gt;&gt;= y</code></td>
   <td><code>x = x &gt;&gt;&gt; y</code></td>
  </tr>
  <tr>
   <td><a href="#Присвоєння_з_побітовим_І">Присвоєння з побітовим І</a></td>
   <td><code>x &amp;= y</code></td>
   <td><code>x = x &amp; y</code></td>
  </tr>
  <tr>
   <td><a href="#Присвоєння_з_виключним_побітовим_АБО">Присвоєння з виключним побітовим АБО</a></td>
   <td><code>x ^= y</code></td>
   <td><code>x = x ^ y</code></td>
  </tr>
  <tr>
   <td><a href="#Присвоєння_з_побітовим_АБО">Присвоєння з побітовим АБО</a></td>
   <td><code>x |= y</code></td>
   <td><code>x = x | y</code></td>
  </tr>
 </tbody>
</table>

<h2 id="Присвоєння"><a name="Assignment">Присвоєння</a></h2>

<p>Простий оператор присвоєння використовується для присвоєння змінній значення. Оператор присвоєння обчислює значення, що присвоюється. Можна використовувати ланцюжок присвоюваннь, щоб присвоїти одне значення декільком змінним. Дивіться приклад нижче.</p>

<h4 id="Синтаксис">Синтаксис</h4>

<pre class="syntaxbox"><strong>Оператор:</strong> x = y
</pre>

<h4 id="Приклади">Приклади</h4>

<pre class="brush: js">// Розглянемо такі змінні:
//  x = 5
//  y = 10
//  z = 25

x = y     // x дорівнює 10
x = y = z // x, y та z усі дорівнюють 25
</pre>

<h3 id="Присвоєння_з_додаванням"><a name="Addition_assignment">Присвоєння з додаванням</a></h3>

<p>Оператор присвоєння з додаванням <strong>додає</strong> значення правого операнду до змінної (лівого перанду) та записує у неї отриманий результат. Типи двох операндів визначають поведінку оператора. Таким чином, його результатом може стати або додавання або конкатенація. Для більш детального огляду дивіться {{jsxref("Operators/Arithmetic_Operators", "оператор додавання", "#Addition", 1)}}.</p>

<h4 id="Синтаксис_2">Синтаксис</h4>

<pre class="syntaxbox"><strong>Оператор:</strong>  x += y
<strong>Значення:</strong>  x  = x + y
</pre>

<h4 id="Приклади_2">Приклади</h4>

<pre class="brush: js">// Розглянемо такі змінні:
//  foo = 'foo'
//  bar = 5
//  baz = true


// число + число -&gt; додавання
bar += 2 // 7

// булеве значення + число -&gt; додавання
baz += 1 // 2

// булеве значення + булеве значення -&gt; додавання
baz += false // 1

// число + рядок -&gt; конкатенація
bar += 'foo' // "5foo"

// рядок + булеве значення -&gt; конкатенація
foo += false // "foofalse"

// рядок + рядок -&gt; конкатенація
foo += 'bar' // "foobar"
</pre>

<h3 id="Присвоєння_з_відніманням"><a name="Subtraction_assignment">Присвоєння з відніманням</a></h3>

<p>Оператор присвоєння з відніманням <strong>віднімає</strong> значення правого операнду від змінної (лівого перанду) та записує у неї отриманий результат. Дивіться {{jsxref("Operators/Arithmetic_Operators", "оператор віднімання", "#Subtraction", 1)}} для більш детального огляду.</p>

<h4 id="Синтаксис_3">Синтаксис</h4>

<pre class="syntaxbox"><strong>Оператор: </strong> x -= y
<strong>Значення:</strong>  x  = x - y
</pre>

<h4 id="Приклади_3">Приклади</h4>

<pre class="brush: js">// Розглянемо такі змінні:
//  bar = 5

bar -= 2     // 3
bar -= 'foo' // NaN
</pre>

<h3 id="Присвоєння_з_множенням"><a name="Multiplication_assignment">Присвоєння з множенням</a></h3>

<p>Оператор присвоєння з множенням <strong>помножує</strong> змінну (лівий операнд) на значення правого операнду та записує отриманий результат у змінну. Дивіться {{jsxref("Operators/Arithmetic_Operators", "оператор множення", "#Multiplication", 1)}} для більш детального огляду.</p>

<h4 id="Синтаксис_4">Синтаксис</h4>

<pre class="syntaxbox"><strong>Оператор:</strong>  x *= y
<strong>Значення:</strong>  x  = x * y
</pre>

<h4 id="Приклади_4">Приклади</h4>

<pre class="brush: js">// Розглянемо такі змінні:
//  bar = 5

bar *= 2     // 10
bar *= 'foo' // NaN
</pre>

<h3 id="Присвоєння_з_діленням"><a name="Division_assignment">Присвоєння з діленням</a></h3>

<p>Оператор присвоєння з діленням <strong>ділить</strong> змінну (лівий операнд) на значення правого операнду та записує отриманий результат у змінну. Дивіться {{jsxref("Operators/Arithmetic_Operators", "оператор ділення", "#Division", 1)}} для більш детального огляду.</p>

<h4 id="Синтаксис_5">Синтаксис</h4>

<pre class="syntaxbox"><strong>Оператор: </strong> x /= y
<strong>Значення:</strong>  x  = x / y
</pre>

<h4 id="Приклади_5">Приклади</h4>

<pre class="brush: js">// Розглянемо такі змінні:
//  bar = 5

bar /= 2     // 2.5
bar /= 'foo' // NaN
bar /= 0     // Infinity
</pre>

<h3 id="Присвоєння_остачі"><a name="Remainder_assignment">Присвоєння остачі</a></h3>

<p>Оператор присвоєння остачі <strong>ділить</strong> змінну на значення правого операнду та присвоює <strong>остачу</strong> змінній. Дивіться {{jsxref("Operators/Arithmetic_Operators", "оператор остачі", "#Remainder", 1)}} для більш детального огляду.</p>

<h4 id="Синтаксис_6">Синтаксис</h4>

<pre class="syntaxbox"><strong>Оператор:</strong>  x %= y
<strong>Значення:</strong>  x  = x % y
</pre>

<h4 id="Приклади_6">Приклади</h4>

<pre class="brush: js">// Розглянемо такі змінні:
//  bar = 5

bar %= 2     // 1
bar %= 'foo' // NaN
bar %= 0     // NaN
</pre>

<h3 id="Присвоєння_з_піднесенням_до_степеня"><a id="Exponentiation_assignment" name="Exponentiation_assignment">Присвоєння з піднесенням до степеня</a></h3>

<p>Оператор присвоєння з піднесенням до степеня обчислює результат піднесення першого операнду до <strong>показника степеня</strong> другого операнду. Дивіться {{jsxref("Operators/Arithmetic_Operators", "оператор піднесення до степеня", "#Exponentiation", 1)}} для більш детального огляду.</p>

<h4 id="Синтаксис_7">Синтаксис</h4>

<pre class="syntaxbox"><strong>Оператор: </strong> x **= y
<strong>Значення:</strong>  x  = x ** y
</pre>

<h4 id="Приклади_7">Приклади</h4>

<pre class="brush: js">// Розглянемо такі змінні:
//  bar = 5

bar **= 2     // 25
bar **= 'foo' // NaN</pre>

<h3 id="Присвоєння_з_лівим_зсувом"><a name="Left_shift_assignment">Присвоєння з лівим зсувом</a></h3>

<p>Оператор присвоєння з лівим зсувом виконує зсув першого операнду на вказану кількість бітів ліворуч та присвоює результат у змінну. Дивіться {{jsxref("Operators/Bitwise_Operators", "оператор лівого зсуву", "#Left_shift", 1)}} для більш детального огляду.</p>

<h4 id="Синтаксис_8">Синтаксис</h4>

<pre class="syntaxbox"><strong>Оператор: </strong> x &lt;&lt;= y
<strong>Значення:</strong>  x   = x &lt;&lt; y
</pre>

<h4 id="Приклади_8">Приклади</h4>

<pre class="brush: js">var bar = 5; //  (00000000000000000000000000000101)
bar &lt;&lt;= 2; // 20 (00000000000000000000000000010100)
</pre>

<h3 id="Присвоєння_з_правим_зсувом"><a name="Right_shift_assignment">Присвоєння з правим зсувом</a></h3>

<p>Оператор присвоєння з правим зсувом виконує зсув першого операнду на вказану кількість бітів праворуч та присвоює результат у змінну. Дивіться {{jsxref("Operators/Bitwise_Operators", "оператор правого зсуву", "#Right_shift", 1)}} для більш детального огляду.</p>

<h4 id="Синтаксис_9">Синтаксис</h4>

<pre class="syntaxbox"><strong>Оператор: </strong> x &gt;&gt;= y
<strong>Значення:</strong>  x   = x &gt;&gt; y
</pre>

<h4 id="Приклади_9">Приклади</h4>

<pre class="brush: js">var bar = 5; //   (00000000000000000000000000000101)
bar &gt;&gt;= 2;   // 1 (00000000000000000000000000000001)

var bar -5; //    (-00000000000000000000000000000101)
bar &gt;&gt;= 2;  // -2 (-00000000000000000000000000000010)
</pre>

<h3 id="Присвоєння_з_беззнаковим_правим_зсувом"><a name="Unsigned_right_shift_assignment">Присвоєння з беззнаковим правим зсувом</a></h3>

<p>Оператор присвоєння з беззнаковим правим зсувом виконує зсув першого операнду на вказану кількість бітів праворуч та присвоює результат змінній. Дивіться {{jsxref("Operators/Bitwise_Operators", " оператор беззнакового правого зсуву", "#Unsigned_right_shift", 1)}} для більш детального огляду.</p>

<h4 id="Синтаксис_10">Синтаксис</h4>

<pre class="syntaxbox"><strong>Оператор: </strong> x &gt;&gt;&gt;= y
<strong>Значення:</strong>  x    = x &gt;&gt;&gt; y
</pre>

<h4 id="Приклади_10">Приклади</h4>

<pre class="brush: js">var bar = 5; //   (00000000000000000000000000000101)
bar &gt;&gt;&gt;= 2;  // 1 (00000000000000000000000000000001)

var bar = -5; // (-00000000000000000000000000000101)
bar &gt;&gt;&gt;= 2; // 1073741822 (00111111111111111111111111111110)</pre>

<h3 id="Присвоєння_з_побітовим_І"><a name="Bitwise_AND_assignment">Присвоєння з побітовим І</a></h3>

<p>Оператор присвоєння з побітовим І використовує двійкове представлення обох операндів, виконує над ними операцію побітового І та присвоює результат змінній. Дивіться {{jsxref("Operators/Bitwise_Operators", "оператор побітового І", "#Bitwise_AND", 1)}} для більш детального огляду.</p>

<h4 id="Синтаксис_11">Синтаксис</h4>

<pre class="syntaxbox"><strong>Оператор:</strong>  x &amp;= y
<strong>Значення:</strong>  x  = x &amp; y
</pre>

<h4 id="Приклади_11">Приклади</h4>

<pre class="brush: js">var bar = 5;
// 5:     00000000000000000000000000000101
// 2:     00000000000000000000000000000010
bar &amp;= 2; // 0
</pre>

<h3 id="Присвоєння_з_виключним_побітовим_АБО"><a name="Bitwise_XOR_assignment">Присвоєння з виключним побітовим АБО</a></h3>

<p>Оператор присвоєння з виключним побітовим АБО використовує двійкове представлення обох операндів, виконує над ними операцію виключного побітового АБО (XOR) та присвоює результат змінній. Дивіться {{jsxref("Operators/Bitwise_Operators", "оператор виключного побітового АБО", "#Bitwise_XOR", 1)}} для більш детального огляду.</p>

<h4 id="Синтаксис_12">Синтаксис</h4>

<pre class="syntaxbox"><strong>Оператор: </strong> x ^= y
<strong>Значення:</strong>  x  = x ^ y
</pre>

<h4 id="Приклади_12">Приклади</h4>

<pre class="brush: js">var bar = 5;
bar ^= 2; // 7
// 5: 00000000000000000000000000000101
// 2: 00000000000000000000000000000010
// -----------------------------------
// 7: 00000000000000000000000000000111
</pre>

<h3 id="Присвоєння_з_побітовим_АБО"><a name="Bitwise_OR_assignment">Присвоєння з побітовим АБО</a></h3>

<p>Оператор присвоєння з побітовим АБО використовує двійкове представлення обох операндів, виконує над ними операцію побітового АБО та присвоює результат змінній. Дивіться {{jsxref("Operators/Bitwise_Operators", "оператор побітового АБО", "#Bitwise_OR", 1)}} для більш детального огляду.</p>

<h4 id="Синтаксис_13">Синтаксис</h4>

<pre class="syntaxbox"><strong>Оператор: </strong> x |= y
<strong>Значення:</strong>  x  = x | y
</pre>

<h4 id="Приклади_13">Приклади</h4>

<pre class="brush: js">var bar = 5;
bar |= 2; // 7
// 5: 00000000000000000000000000000101
// 2: 00000000000000000000000000000010
// -----------------------------------
// 7: 00000000000000000000000000000111
</pre>

<h2 id="Приклади_14">Приклади</h2>

<h3 id="Лівий_операнд_з_іншим_оператором_присвоєння">Лівий операнд з іншим оператором присвоєння</h3>

<p>У незвичних ситуаціях оператор присвоєння (наприклад, <code> x += y</code>) не є ідентичним виразу, який він означає (в даному випадку <code>x = x + y</code>). Коли лівий операнд оператора присвоєння сам містить оператор присвоєння, лівий операнд обчислюється лише один раз. Наприклад:</p>

<pre class="brush: js">a[i++] += 5         // i обчислюється лише один раз
a[i++] = a[i++] + 5 // i обчислюється двічі
</pre>

<h2 id="Специфікації">Специфікації</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Специфікація</th>
   <th scope="col">Статус</th>
   <th scope="col">Коментар</th>
  </tr>
  <tr>
   <td>{{SpecName('ESDraft', '#sec-assignment-operators', 'Assignment operators')}}</td>
   <td>{{Spec2('ESDraft')}}</td>
   <td></td>
  </tr>
  <tr>
   <td>{{SpecName('ES2015', '#sec-assignment-operators', 'Assignment operators')}}</td>
   <td>{{Spec2('ES2015')}}</td>
   <td></td>
  </tr>
  <tr>
   <td>{{SpecName('ES5.1', '#sec-11.13', 'Assignment operators')}}</td>
   <td>{{Spec2('ES5.1')}}</td>
   <td></td>
  </tr>
  <tr>
   <td>{{SpecName('ES1', '#sec-11.13', 'Assignment operators')}}</td>
   <td>{{Spec2('ES1')}}</td>
   <td>Початкове визначення.</td>
  </tr>
 </tbody>
</table>

<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2>

<div class="hidden">
<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
</div>

<p>{{Compat("javascript.operators.assignment")}}</p>

<div id="compat-mobile"></div>

<h2 id="Див._також">Див. також</h2>

<ul>
 <li><a href="/uk/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators">Арифметичні оператори</a></li>
</ul>