aboutsummaryrefslogtreecommitdiff
path: root/files/ru/web/javascript/reference/operators/index.html
blob: eff74ba579a39f894d6ae41a1a36ba00aa74d411 (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
---
title: Выражения и операторы
slug: Web/JavaScript/Reference/Operators
tags:
  - JavaScript
  - Operators
translation_of: Web/JavaScript/Reference/Operators
---
<div>{{jsSidebar("Operators")}}</div>

<p>Эта глава описывает все операторы, выражения и ключевые слова языка JavaScript.</p>

<h2 id="Expressions_and_operators_by_category" name="Expressions_and_operators_by_category">Выражения и операторы по категориям</h2>

<p>Алфавитный список смотрите в боковой панели слева.</p>

<h3 id="Primary_expressions" name="Primary_expressions">Первичные выражения</h3>

<p>Базовые ключевые слова и общие выражения в JavaScript.</p>

<dl>
 <dt>{{jsxref("Operators/this", "this")}}</dt>
 <dd>Ключевое слово <code>this</code> ссылается на контекст выполняемой функции.</dd>
 <dt>{{jsxref("Operators/function", "function")}}</dt>
 <dd>Ключевое слово <code>function</code> определяет выражение функции.</dd>
 <dt>{{jsxref("Operators/class", "class")}}</dt>
 <dd>Ключевое слово <code>class</code> определяет выражение класса.</dd>
 <dt>{{jsxref("Operators/function*", "function*")}}</dt>
 <dd>Ключевое слово <code>function*</code> (со звёздочкой) определяет функцию-генератор.</dd>
 <dt>{{jsxref("Operators/yield", "yield")}}</dt>
 <dd>Пауза или продолжение выполнения функции-генератора.</dd>
 <dt>{{jsxref("Operators/yield*", "yield*")}}</dt>
 <dd>Делегирует выполнение другому генератору итерируемому объекту.</dd>
 <dt>{{experimental_inline}} {{jsxref("Operators/async_function", "async function*")}}</dt>
 <dd><code>async function</code> определяет выражение асинхронной функции.</dd>
 <dt>{{experimental_inline}} {{jsxref("Operators/await", "await")}}</dt>
 <dd>Пауза и продолжение выполнения асинхронной функции и ожидание <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a> (результата выполнения) с результатом разрешено/отклонено.</dd>
 <dt>{{jsxref("Global_Objects/Array", "[]")}}</dt>
 <dd>Синтаксис создания инициализатора/литерала массива.</dd>
 <dt>{{jsxref("Operators/Object_initializer", "{}")}}</dt>
 <dd>Синтаксис создания инициализатора/литерала объекта</dd>
 <dt>{{jsxref("Global_Objects/RegExp", "/ab+c/i")}}</dt>
 <dd>Синтаксис создания литерала регулярного выражения.</dd>
 <dt>{{jsxref("Operators/Grouping", "( )")}}</dt>
 <dd>Оператор группировки.</dd>
</dl>

<h3 id="Left-hand-side_expressions" name="Left-hand-side_expressions">Левосторонние выражения</h3>

<p>Значения слева являются назначением присваивания.</p>

<dl>
 <dt>{{jsxref("Operators/Property_accessors", "Доступ к свойству", "", 1)}}</dt>
 <dd>Операторы доступа к членам предоставляют доступ к свойству или методу объекта<br>
 (<code>object.property</code> и <code>object['property']</code>).</dd>
 <dt>{{jsxref("Operators/new", "new")}}</dt>
 <dd>Оператор <code>new</code> создаёт экземпляр объекта с использованием конструктора.</dd>
 <dt><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new.target">new.target</a></dt>
 <dd>Свойство <code>new.target</code> ссылается на конструктор или функцию, который был вызван через оператор {{jsxref("Operators/new", "new")}}.</dd>
 <dt>{{jsxref("Operators/super", "super")}}</dt>
 <dd>Ключевое слово <code>super</code> вызывает конструктор родительского класса.</dd>
 <dt>{{jsxref("Operators/Spread_operator", "...obj")}}</dt>
 <dd>Оператор распространения позволяет развернуть выражение в местах, где ожидается несколько аргументов (при вызове функций) или несколько элементов (при создании литералов массива).</dd>
</dl>

<h3 id="Increment_and_decrement" name="Increment_and_decrement">Инкремент и декремент</h3>

<p>Операторы постфиксного/префиксного инкремента и декремента.</p>

<dl>
 <dt>{{jsxref("Operators/Arithmetic_Operators", "A++", "#Increment")}}</dt>
 <dd>Оператор постфиксного инкремента.</dd>
 <dt>{{jsxref("Operators/Arithmetic_Operators", "A--", "#Decrement")}}</dt>
 <dd>Оператор постфиксного декремента.</dd>
 <dt>{{jsxref("Operators/Arithmetic_Operators", "++A", "#Increment")}}</dt>
 <dd>Оператор префиксного инкремента. <em>(Значение переменной, сначала, увеличивается на 1, а затем используется в выражении)</em></dd>
 <dt>{{jsxref("Operators/Arithmetic_Operators", "--A", "#Decrement")}}</dt>
 <dd>Оператор префиксного декремента.</dd>
</dl>

<h3 id="Unary_operators" name="Unary_operators">Унарные операторы</h3>

<p>Унарные опарации — это операции с одним операндом.</p>

<dl>
 <dt>{{jsxref("Operators/delete", "delete")}}</dt>
 <dd>Оператор <code>delete</code> удаляет свойство из объекта.</dd>
 <dt>{{jsxref("Operators/void", "void")}}</dt>
 <dd>Оператор <code>void</code> отбрасывает возвращаемое значение выражения.</dd>
 <dt>{{jsxref("Operators/typeof", "typeof")}}</dt>
 <dd>Оператор <code>typeof</code> определяет тип переданного объекта.</dd>
 <dt>{{jsxref("Operators/Arithmetic_Operators", "+", "#Unary_plus")}}</dt>
 <dd>Оператор унарного плюса преобразует свой операнд в тип {{jsxref("Global_Objects/Number", "Number")}}.</dd>
 <dt>{{jsxref("Operators/Arithmetic_Operators", "-", "#Unary_negation")}}</dt>
 <dd>Оператор унарного минуса преобразует свой операнд в тип {{jsxref("Global_Objects/Number", "Number")}}, а затем меняет его знак.</dd>
 <dt>{{jsxref("Operators/Bitwise_Operators", "~", "#Bitwise_NOT")}}</dt>
 <dd>Оператор побитового НЕ.</dd>
 <dt>{{jsxref("Operators/Logical_Operators", "!", "#Logical_NOT")}}</dt>
 <dd>Оператор логического НЕ.</dd>
</dl>

<h3 id="Arithmetic_operators" name="Arithmetic_operators">Арифметические операторы</h3>

<p>Арифметические операторы своими операндами принимают числовые значения (литерали или переменные) и возвращают одно числовое значение.</p>

<dl>
 <dt>{{jsxref("Operators/Arithmetic_Operators", "+", "#Addition")}}</dt>
 <dd>Оператор сложения.</dd>
 <dt>{{jsxref("Operators/Arithmetic_Operators", "-", "#Subtraction")}}</dt>
 <dd>Оператор вычитания.</dd>
 <dt>{{jsxref("Operators/Arithmetic_Operators", "/", "#Division")}}</dt>
 <dd>Оператор деления.</dd>
 <dt>{{jsxref("Operators/Arithmetic_Operators", "*", "#Multiplication")}}</dt>
 <dd>Оператор умножения.</dd>
 <dt>{{jsxref("Operators/Arithmetic_Operators", "%", "#Remainder")}}</dt>
 <dd>Оператор взятия остатка от деления.</dd>
 <dt>{{jsxref("Operators/Arithmetic_Operators", "**", "#Exponentiation")}}</dt>
 <dd>Оператор возведения в степень.</dd>
</dl>

<h3 id="Relational_operators" name="Relational_operators">Реляционные операторы</h3>

<p>Реляционные операторы (операторы отношения) сравнивают свои операнды и возвращают значение типа {{jsxref("Global_Objects/Boolean", "Boolean")}}, зависящее от того, был ли результат сравнения истинным или ложным.</p>

<dl>
 <dt>{{jsxref("Operators/in", "in")}}</dt>
 <dd>Оператор <code>in</code> определяет, содержит ли объект указанное свойство.</dd>
 <dt>{{jsxref("Operators/instanceof", "instanceof")}}</dt>
 <dd>Оператор <code>instanceof</code> определяет, является ли объект экземпляром потомком Prototype (или экземпляром) другого объекта.</dd>
 <dt>{{jsxref("Operators/Comparison_Operators", "&lt;", "#Less_than_operator")}}</dt>
 <dd>Оператор меньше.</dd>
 <dt>{{jsxref("Operators/Comparison_Operators", "&gt;", "#Greater_than_operator")}}</dt>
 <dd>Оператор больше.</dd>
 <dt>{{jsxref("Operators/Comparison_Operators", "&lt;=", "#Less_than_or_equal_operator")}}</dt>
 <dd>Оператор меньше или равно.</dd>
 <dt>{{jsxref("Operators/Comparison_Operators", "&gt;=", "#Greater_than_or_equal_operator")}}</dt>
 <dd>Оператор больше или равно.</dd>
</dl>

<div class="note">
<p><strong>Заметьте: =&gt;</strong> это не оператор. Это нотация для <a href="/ru/docs/Web/JavaScript/Reference/Functions/Arrow_functions">Стрелочных функций</a>.</p>
</div>

<h3 id="Equality_operators" name="Equality_operators">Операторы равенства</h3>

<p>Результат вычисления оператора равенства всегда имеет тип {{jsxref("Global_Objects/Boolean", "Boolean")}} и значение, зависящее от того, был ли результат проверки истинным или ложным.</p>

<dl>
 <dt>{{jsxref("Operators/Comparison_Operators", "==", "#Equality")}}</dt>
 <dd>Оператор проверки на равенство.</dd>
 <dt>{{jsxref("Operators/Comparison_Operators", "!=", "#Inequality")}}</dt>
 <dd>Оператор проверки на неравенство.</dd>
 <dt>{{jsxref("Operators/Comparison_Operators", "===", "#Identity")}}</dt>
 <dd>Оператор проверки на идентичность.</dd>
 <dt>{{jsxref("Operators/Comparison_Operators", "!==", "#Nonidentity")}}</dt>
 <dd>Оператор проверки на неидентичность.</dd>
</dl>

<h3 id="Bitwise_shift_operators" name="Bitwise_shift_operators">Операторы побитового сдвига</h3>

<p>Операции для сдвига всех битов операнда.</p>

<dl>
 <dt>{{jsxref("Operators/Bitwise_Operators", "&lt;&lt;", "#Left_shift")}}</dt>
 <dd>Оператор побитового сдвига влево.</dd>
 <dt>{{jsxref("Operators/Bitwise_Operators", "&gt;&gt;", "#Right_shift")}}</dt>
 <dd>Оператор знакового побитового сдвига вправо.</dd>
 <dt>{{jsxref("Operators/Bitwise_Operators", "&gt;&gt;&gt;", "#Unsigned_right_shift")}}</dt>
 <dd>Оператор беззнакового побитового сдвига вправо.</dd>
</dl>

<h3 id="Binary_bitwise_operators" name="Binary_bitwise_operators">Бинарные побитовые операторы</h3>

<p>Побитовые операторы трактуют свои операнды как набор из 32 битов (нулей и единиц) и возвращают стандартные числовые значения JavaScript.</p>

<dl>
 <dt>{{jsxref("Operators/Bitwise_Operators", "&amp;", "#Bitwise_AND")}}</dt>
 <dd>Оператор побитового И.</dd>
 <dt>{{jsxref("Operators/Bitwise_Operators", "|", "#Bitwise_OR")}}</dt>
 <dd>Оператор побитового ИЛИ.</dd>
 <dt>{{jsxref("Operators/Bitwise_Operators", "^", "#Bitwise_XOR")}}</dt>
 <dd>Оператор побитового ИСКЛЮЧАЮЩЕГО ИЛИ.</dd>
</dl>

<h3 id="Binary_logical_operators" name="Binary_logical_operators">Бинарные логические операторы</h3>

<p>Логические операторы обычно используются вместе с булевыми (логическими) значениями и в сочетании с ними они возвращают булево значение.</p>

<dl>
 <dt>{{jsxref("Operators/Logical_Operators", "&amp;&amp;", "#Logical_AND")}}</dt>
 <dd>Оператор логического И.</dd>
 <dt>{{jsxref("Operators/Logical_Operators", "||", "#Logical_OR")}}</dt>
 <dd>Оператор логического ИЛИ.</dd>
</dl>

<h3 id="Conditional_(ternary)_operator" name="Conditional_(ternary)_operator">Условный (тернарный) оператор</h3>

<dl>
 <dt>{{jsxref("Operators/Conditional_Operator", "(условие ? ifTrue : ifFalse)")}}</dt>
 <dd>Условный оператор возвращает одно значение из двух данных в зависимости от логического значения условия.</dd>
</dl>

<h3 id="Assignment_operators" name="Assignment_operators">Операторы присваивания</h3>

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

<dl>
 <dt>{{jsxref("Operators/Assignment_Operators", "=", "#Assignment")}}</dt>
 <dd>Оператор присваивания.</dd>
 <dt>{{jsxref("Operators/Assignment_Operators", "*=", "#Multiplication_assignment")}}</dt>
 <dd>Оператор присваивания с умножением.</dd>
 <dt>{{jsxref("Operators/Assignment_Operators", "/=", "#Division_assignment")}}</dt>
 <dd>Оператор присваивания с делением.</dd>
 <dt>{{jsxref("Operators/Assignment_Operators", "%=", "#Remainder_assignment")}}</dt>
 <dd>Оператор присваивания с взятием остатка от деления.</dd>
 <dt>{{jsxref("Operators/Assignment_Operators", "+=", "#Addition_assignment")}}</dt>
 <dd>Оператор присваивания со сложением.</dd>
 <dt>{{jsxref("Operators/Assignment_Operators", "-=", "#Subtraction_assignment")}}</dt>
 <dd>Оператор присваивания с вычитанием.</dd>
 <dt>{{jsxref("Operators/Assignment_Operators", "&lt;&lt;=", "#Left_shift_assignment")}}</dt>
 <dd>Оператор присваивания со сдвигом влево.</dd>
 <dt>{{jsxref("Operators/Assignment_Operators", "&gt;&gt;=", "#Right_shift_assignment")}}</dt>
 <dd>Оператор присваивания со знаковым сдвигом вправо.</dd>
 <dt>{{jsxref("Operators/Assignment_Operators", "&gt;&gt;&gt;=", "#Unsigned_right_shift_assignment")}}</dt>
 <dd>Оператор присваивания с беззнаковым сдвигом вправо.</dd>
 <dt>{{jsxref("Operators/Assignment_Operators", "&amp;=", "#Bitwise_AND_assignment")}}</dt>
 <dd>Оператор присваивания с побитовым И.</dd>
 <dt>{{jsxref("Operators/Assignment_Operators", "^=", "#Bitwise_XOR_assignment")}}</dt>
 <dd>Оператор присваивания с побитовым ИСКЛЮЧАЮЩИМ ИЛИ.</dd>
 <dt>{{jsxref("Operators/Assignment_Operators", "|=", "#Bitwise_OR_assignment")}}</dt>
 <dd>Оператор присваивания с побитовым ИЛИ.</dd>
 <dt>{{jsxref("Operators/Destructuring_assignment", "[a, b] = [1, 2]")}}<br>
 {{jsxref("Operators/Destructuring_assignment", "{a, b} = {a:1, b:2}")}}</dt>
 <dd>Деструктурирующее присваивание позволяет вам присваивать свойства массива или объекта переменным с использованием синтаксиса, очень похожего на объявление литералов массива или объекта.</dd>
</dl>

<h3 id="Comma_operator" name="Comma_operator">Оператор запятая</h3>

<dl>
 <dt>{{jsxref("Operators/Comma_Operator", ",")}}</dt>
 <dd>Оператор запятая позволяет вычислять несколько выражений в одном операторе и возвращает результат вычисления последнего выражения.</dd>
 <dt>
 <h3 id="Нестандартные_особенности">Нестандартные особенности</h3>
 </dt>
 <dt>{{non-standard_inline}} {{jsxref("Operators/Legacy_generator_function", "Legacy generator function", "", 1)}}</dt>
 <dd>Ключевое слово <code>function</code> может быть использовано для определения устаревших функций-генераторов в одном выражении. Для того, чтобы сделать такую функцию, её тело должно содержать хотя бы одно выражение {{jsxref("Operators/yield", "yield")}}.</dd>
 <dt>{{non-standard_inline}} {{jsxref("Operators/Expression_closures", "Expression closures", "", 1)}}</dt>
 <dd>Синтаксис закрытого выражения для сокращённого написания простейших функций.</dd>
 <dt>{{non-standard_inline}} {{jsxref("Operators/Array_comprehensions", "[for (x of y) x]")}}</dt>
 <dd>Упрощённый синтаксис создания массива.</dd>
 <dt>{{non-standard_inline}} {{jsxref("Operators/Generator_comprehensions", "(for (x of y) y)")}}</dt>
 <dd>Упрощённый синтаксис создания генератора.</dd>
</dl>

<h2 id="Specifications" name="Specifications">Спецификации</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Спецификация</th>
   <th scope="col">Статус</th>
   <th scope="col">Комментарии</th>
  </tr>
  <tr>
   <td>{{SpecName('ES1', '#sec-11', 'Expressions')}}</td>
   <td>{{Spec2('ES1')}}</td>
   <td>Изначальное определение.</td>
  </tr>
  <tr>
   <td>{{SpecName('ES5.1', '#sec-11', 'Expressions')}}</td>
   <td>{{Spec2('ES5.1')}}</td>
   <td></td>
  </tr>
  <tr>
   <td>{{SpecName('ES6', '#sec-ecmascript-language-expressions', 'ECMAScript Language: Expressions')}}</td>
   <td>{{Spec2('ES6')}}</td>
   <td>Новое: Оператор распространения, деструктурирующее присваивание, ключевое слово <code>super</code>.</td>
  </tr>
  <tr>
   <td>{{SpecName('ESDraft', '#sec-ecmascript-language-expressions', 'ECMAScript Language: Expressions')}}</td>
   <td>{{Spec2('ESDraft')}}</td>
   <td></td>
  </tr>
 </tbody>
</table>

<h2 id="See_also" name="See_also">Смотрите также</h2>

<ul>
 <li>{{jsxref("Operators/Operator_Precedence", "Приоритеты операторов", "", 1)}}</li>
</ul>