--- 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">Выражения и операторы по категориям</h2> <p>Алфавитный список смотрите в боковой панели слева.</p> <h3 id="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">Левосторонние выражения</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">Инкремент и декремент</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">Унарные операторы</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">Арифметические операторы</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">Реляционные операторы</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", "<", "#Less_than_operator")}}</dt> <dd>Оператор меньше.</dd> <dt>{{jsxref("Operators/Comparison_Operators", ">", "#Greater_than_operator")}}</dt> <dd>Оператор больше.</dd> <dt>{{jsxref("Operators/Comparison_Operators", "<=", "#Less_than_or_equal_operator")}}</dt> <dd>Оператор меньше или равно.</dd> <dt>{{jsxref("Operators/Comparison_Operators", ">=", "#Greater_than_or_equal_operator")}}</dt> <dd>Оператор больше или равно.</dd> </dl> <div class="note"> <p><strong>Заметьте: =></strong> это не оператор. Это нотация для <a href="/ru/docs/Web/JavaScript/Reference/Functions/Arrow_functions">Стрелочных функций</a>.</p> </div> <h3 id="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">Операторы побитового сдвига</h3> <p>Операции для сдвига всех битов операнда.</p> <dl> <dt>{{jsxref("Operators/Bitwise_Operators", "<<", "#Left_shift")}}</dt> <dd>Оператор побитового сдвига влево.</dd> <dt>{{jsxref("Operators/Bitwise_Operators", ">>", "#Right_shift")}}</dt> <dd>Оператор знакового побитового сдвига вправо.</dd> <dt>{{jsxref("Operators/Bitwise_Operators", ">>>", "#Unsigned_right_shift")}}</dt> <dd>Оператор беззнакового побитового сдвига вправо.</dd> </dl> <h3 id="Binary_bitwise_operators">Бинарные побитовые операторы</h3> <p>Побитовые операторы трактуют свои операнды как набор из 32 битов (нулей и единиц) и возвращают стандартные числовые значения JavaScript.</p> <dl> <dt>{{jsxref("Operators/Bitwise_Operators", "&", "#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">Бинарные логические операторы</h3> <p>Логические операторы обычно используются вместе с булевыми (логическими) значениями и в сочетании с ними они возвращают булево значение.</p> <dl> <dt>{{jsxref("Operators/Logical_Operators", "&&", "#Logical_AND")}}</dt> <dd>Оператор логического И.</dd> <dt>{{jsxref("Operators/Logical_Operators", "||", "#Logical_OR")}}</dt> <dd>Оператор логического ИЛИ.</dd> </dl> <h3 id="Conditional_(ternary)_operator">Условный (тернарный) оператор</h3> <dl> <dt>{{jsxref("Operators/Conditional_Operator", "(условие ? ifTrue : ifFalse)")}}</dt> <dd>Условный оператор возвращает одно значение из двух данных в зависимости от логического значения условия.</dd> </dl> <h3 id="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", "<<=", "#Left_shift_assignment")}}</dt> <dd>Оператор присваивания со сдвигом влево.</dd> <dt>{{jsxref("Operators/Assignment_Operators", ">>=", "#Right_shift_assignment")}}</dt> <dd>Оператор присваивания со знаковым сдвигом вправо.</dd> <dt>{{jsxref("Operators/Assignment_Operators", ">>>=", "#Unsigned_right_shift_assignment")}}</dt> <dd>Оператор присваивания с беззнаковым сдвигом вправо.</dd> <dt>{{jsxref("Operators/Assignment_Operators", "&=", "#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">Оператор запятая</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">Спецификации</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">Смотрите также</h2> <ul> <li>{{jsxref("Operators/Operator_Precedence", "Приоритеты операторов", "", 1)}}</li> </ul>