diff options
Diffstat (limited to 'files/ru/web/javascript/reference/operators/оператор_запятая')
-rw-r--r-- | files/ru/web/javascript/reference/operators/оператор_запятая/index.html | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/files/ru/web/javascript/reference/operators/оператор_запятая/index.html b/files/ru/web/javascript/reference/operators/оператор_запятая/index.html new file mode 100644 index 0000000000..471c81ba88 --- /dev/null +++ b/files/ru/web/javascript/reference/operators/оператор_запятая/index.html @@ -0,0 +1,103 @@ +--- +title: Оператор Запятая +slug: Web/JavaScript/Reference/Operators/Оператор_Запятая +tags: + - Оператор запятая +translation_of: Web/JavaScript/Reference/Operators/Comma_Operator +--- +<div>{{jsSidebar("Operators")}}</div> + +<p><strong>Оператор запятая</strong> выполняет каждый из его операндов (слева направо) и возвращает значение последнего операнда.</p> + +<div>{{EmbedInteractiveExample("pages/js/expressions-commaoperators.html")}}</div> + + + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><em>expr1</em>, <em>expr2, expr3...</em></pre> + +<h2 id="Параметры">Параметры</h2> + +<dl> + <dt><code>expr1</code>, <code>expr2, expr3...</code></dt> + <dd>Любые выражения.</dd> +</dl> + +<h2 id="Описание">Описание</h2> + +<p>Вы можете использовать оператор запятая, когда необходимо включить несколько выражений в место, которое принимает только одно выражение. Наиболее частый пример использования этого оператора - это передача нескольких параметров в цикл <code>for</code>.</p> + +<h2 id="Примеры">Примеры</h2> + +<p>Если <code>a</code> это двумерный массив элементов размерностью 10 х 10, то приведенный ниже код использует оператор запятая для одновременного изменения двух переменных за раз.</p> + +<p>Следующий код выводит в консоль значения диагональных элементов массива:</p> +<pre class="brush:js;highlight:[1]">for (let i = 0, j = 9; i <= 9; i++, j--) + console.log("a[" + i + "][" + j + "] = " + a[i][j]);</pre> + +<p>Заметьте, что запятая при объявлении переменной <code>var</code>, <code>let</code> или <code>const</code> <strong>не</strong> является оператором запятая, так как в данном случае она находится не в выражении. Скорее, это спец символ в объявлении переменных, комбинирующий их множество в одно выражение. Практически, эта запятая ведет себя почти так же, как и запятая.</p> + +<pre class="brush: js"> // подобное объявление запрещено в строгом режиме(strict mode) + +a = b = 3, c = 4; // возвращает 4 в консоль +console.log(a); // 3 +x = (y = 5, z = 6); // возвращает 6 в консоль +console.log(x); // 6 +</pre> + +<p>Оператор запятая полностью отличается от запятой в массивах, объектах, аргументах и параметрах функции.</p> + +<h3 id="Вычисления_и_возврат_значения">Вычисления и возврат значения</h3> + +<p>Другой пример использования оператора запятой – вычисления перед возвратом значения. Как было указано ранее, будет возвращён только последний элемент, но все предыдущие также будут вычислены. Таким образом можно сделать:</p> + +<pre class="brush: js">function myFunc () { + let x = 0; + + return (x += 1, x); // то же самое, что return ++x; +}</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-comma-operator', 'Comma operator')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-comma-operator', 'Comma operator')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-11.14', 'Comma operator')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES1', '#sec-11.14', 'Comma operator')}}</td> + <td>{{Spec2('ES1')}}</td> + <td>Initial definition</td> + </tr> + </tbody> + </table> + +<h2 id="Совместимость_браузеров">Совместимость браузеров</h2> + + + +<p>{{Compat("javascript.operators.comma")}}</p> + +<h2 id="Смотри_также">Смотри также</h2> + +<ul> + <li><a href="/ru/docs/Web/JavaScript/Reference/Statements/for">for loop</a></li> +</ul> |