diff options
Diffstat (limited to 'files/ru/web/javascript/reference/operators/assignment_operators')
-rw-r--r-- | files/ru/web/javascript/reference/operators/assignment_operators/index.html | 430 |
1 files changed, 430 insertions, 0 deletions
diff --git a/files/ru/web/javascript/reference/operators/assignment_operators/index.html b/files/ru/web/javascript/reference/operators/assignment_operators/index.html new file mode 100644 index 0000000000..aa1d42facf --- /dev/null +++ b/files/ru/web/javascript/reference/operators/assignment_operators/index.html @@ -0,0 +1,430 @@ +--- +title: Операторы присваивания +slug: Web/JavaScript/Reference/Operators/Assignment_Operators +tags: + - JavaScript + - Оператор +translation_of: Web/JavaScript/Reference/Operators#Assignment_operators +--- +<div>{{jsSidebar("Operators")}}</div> + +<p><strong>Оператор присваивания</strong> присваивает левому операнду значение, основанное на значении правого операнда.</p> + +<h2 id="Описание">Описание</h2> + +<p>Основной оператор присваивания - это знак равно (<code>=</code>), он и присваивает значение правого операнда, левому. То есть - <code>x = y</code> присваивает значение переменной <code>y</code>, переменной <code>x</code>. Другие операторы присваивания, как следует из приведенной ниже таблицы с определениями и примерами, являются сокращениями стандартных операций.</p> + +<table class="standard-table"> + <tbody> + <tr> + <th>Имя</th> + <th>Сокращенный оператор</th> + <th>Смысл</th> + </tr> + <tr> + <td><a href="#Assignment">Присваивание</a></td> + <td><code>x = y</code></td> + <td><code>x = y</code></td> + </tr> + <tr> + <td><a href="#Addition_assignment">Присваивание со сложением</a></td> + <td><code>x += y</code></td> + <td><code>x = x + y</code></td> + </tr> + <tr> + <td><a href="#Subtraction_assignment">Присваивание с вычитанием</a></td> + <td><code>x -= y</code></td> + <td><code>x = x - y</code></td> + </tr> + <tr> + <td><a href="#Multiplication_assignment">Присваивание с умножением</a></td> + <td><code>x *= y</code></td> + <td><code>x = x * y</code></td> + </tr> + <tr> + <td><a href="#Division_assignment">Присваивание с делением</a></td> + <td><code>x /= y</code></td> + <td><code>x = x / y</code></td> + </tr> + <tr> + <td><a href="#Remainder_assignment">Присваивание по модулю</a></td> + <td><code>x %= y</code></td> + <td><code>x = x % y</code></td> + </tr> + <tr> + <td><a href="#Left_shift_assignment">Присваивание с левым сдвигом</a></td> + <td><code>x <<= y</code></td> + <td><code>x = x << y</code></td> + </tr> + <tr> + <td><a href="#Right_shift_assignment">Присваивание с правым сдвигом</a></td> + <td><code>x >>= y</code></td> + <td><code>x = x >> y</code></td> + </tr> + <tr> + <td><a href="#Unsigned_right_shift_assignment">Присваивание с беззнаковым сдвигом вправо</a></td> + <td><code>x >>>= y</code></td> + <td><code>x = x >>> y</code></td> + </tr> + <tr> + <td><a href="#Bitwise_AND_assignment">Присваивание с побитовым AND</a></td> + <td><code>x &= y</code></td> + <td><code>x = x & y</code></td> + </tr> + <tr> + <td><a href="#Bitwise_XOR_assignment">Присваивание с побитовым XOR</a></td> + <td><code>x ^= y</code></td> + <td><code>x = x ^ y</code></td> + </tr> + <tr> + <td><a href="#Bitwise_OR_assignment">Присваивание с побитовым OR</a></td> + <td><code>x |= y</code></td> + <td><code>x = x | y</code></td> + </tr> + </tbody> +</table> + +<h2 id="Присваивание">Присваивание</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> + +<h2 id="Присваивание_со_сложением">Присваивание со сложением</h2> + +<p>Оператор добавочного присваивания, <strong>добавляет</strong> значение правого операнда к значению левого, и сохраняет результат в переменную левого операнда.<strong> </strong>Типы значений обоих операндов, определяют поведение оператора добавочного присваивания. Возможны сложение и конкатенация. Смотрите {{jsxref("Operators/Arithmetic_Operators", "addition operator", "#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 + +// Результат исполнения каждого нижеприведенного примера +// представлен в изоляции от предыдущих примеров (как если +// бы значения переменных foo, bar, baz возвращались на +// первоначальные) + +// Number + Number -> сложение +bar += 2 // 7 + +// Boolean + Number -> сложение +baz += 1 // 2 + +// Boolean + Boolean -> сложение +baz += false // 1 + +// Number + String -> конкатенация +bar += "foo" // "5foo" + +// String + Boolean -> конкатенация +foo += false // "foofalse" + +// String + String -> конкатенация +foo += "bar" // "foobar" +</pre> + +<h2 id="Присваивание_с_вычитанием">Присваивание с вычитанием</h2> + +<p>Оператор вычитаемого присваивания <strong>вычитает</strong> значение правого операнда из значения левого, и присваивает результат переменной левого операнда. Смотрите {{jsxref("Operators/Arithmetic_Operators", "subtraction operator", "#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>The multiplication assignment operator <strong>multiplies</strong> a variable by the value of the right operand and assigns the result to the variable. See the {{jsxref("Operators/Arithmetic_Operators", "multiplication operator", "#Multiplication", 1)}} for more details.</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">// Assuming the following variable +// bar = 5 + +bar *= 2 // 10 +bar *= "foo" // NaN +</pre> + +<h3 id="Присваивание_с_делением"><a name="Division_assignment">Присваивание с делением</a></h3> + +<p>The division assignment operator <strong>divides</strong> a variable by the value of the right operand and assigns the result to the variable. See the {{jsxref("Operators/Arithmetic_Operators", "division operator", "#Division", 1)}} for more details.</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">// Assuming the following variable +// bar = 5 + +bar /= 2 // 2.5 +bar /= "foo" // NaN +bar /= 0 // Infinity +</pre> + +<h3 id="Присваивание_по_модулю"><a name="Remainder_assignment">Присваивание по модулю</a></h3> + +<p>The remainder assignment operator <strong>divides</strong> a variable by the value of the right operand and assigns the <strong>remainder</strong> to the variable. See the {{jsxref("Operators/Arithmetic_Operators", "remainder operator", "#Remainder", 1)}} for more details.</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">// Assuming the following variable +// bar = 5 + +bar %= 2 // 1 +bar %= "foo" // NaN +bar %= 0 // NaN +</pre> + +<h3 id="Присваивание_с_левым_сдвигом"><a name="Left_shift_assignment">Присваивание с левым сдвигом</a></h3> + +<p>The left shift assignment operator moves the specified amount of bits to the left and assigns the result to the variable. See the {{jsxref("Operators/Bitwise_Operators", "left shift operator", "#Left_shift", 1)}} for more details.</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">var bar = 5; // (00000000000000000000000000000101) +bar <<= 2; // 20 (00000000000000000000000000010100) +</pre> + +<h3 id="Присваивание_с_правым_сдвигом"><a name="Right_shift_assignment">Присваивание с правым сдвигом</a></h3> + +<p>The right shift assignment operator moves the specified amount of bits to the right and assigns the result to the variable. See the {{jsxref("Operators/Bitwise_Operators", "right shift operator", "#Right_shift", 1)}} for more details.</p> + +<h4 id="Синтаксис_8">Синтаксис</h4> + +<pre class="syntaxbox"><strong>Оператор:</strong> x >>= y +<strong>Значение:</strong> x = x >> y +</pre> + +<h4 id="Примеры_8">Примеры</h4> + +<pre class="brush: js">var bar = 5; // (00000000000000000000000000000101) +bar >>= 2; // 1 (00000000000000000000000000000001) + +var bar -5; // (-00000000000000000000000000000101) +bar >>= 2; // -2 (-00000000000000000000000000000010) +</pre> + +<h3 id="Присваивание_с_беззнаковым_сдвигом_вправо"><a name="Unsigned_right_shift_assignment">Присваивание с беззнаковым сдвигом вправо</a></h3> + +<p>The unsigned right shift assignment operator moves the specified amount of bits to the right and assigns the result to the variable. See the {{jsxref("Operators/Bitwise_Operators", " unsigned right shift operator", "#Unsigned_right_shift", 1)}} for more details.</p> + +<h4 id="Синтаксис_9">Синтаксис</h4> + +<pre class="syntaxbox"><strong>Оператор:</strong> x >>>= y +<strong>Значение:</strong> x = x >>> y +</pre> + +<h4 id="Примеры_9">Примеры</h4> + +<pre class="brush: js">var bar = 5; // (00000000000000000000000000000101) +bar >>>= 2; // 1 (00000000000000000000000000000001) + +var bar = -5; // (-00000000000000000000000000000101) +bar >>>= 2; // 1073741822 (00111111111111111111111111111110)</pre> + +<h3 id="Присваивание_с_побитовым_AND"><a name="Bitwise_AND_assignment">Присваивание с побитовым AND</a></h3> + +<p>The bitwise AND assignment operator uses the binary representation of both operands, does a bitwise AND operation on them and assigns the result to the variable. See the {{jsxref("Operators/Bitwise_Operators", "bitwise AND operator", "#Bitwise_AND", 1)}} for more details.</p> + +<h4 id="Синтаксис_10">Синтаксис</h4> + +<pre class="syntaxbox"><strong>Оператор:</strong> x &= y +<strong>Значение:</strong> x = x & y +</pre> + +<h4 id="Примеры_10">Примеры</h4> + +<pre class="brush: js">var bar = 5; +// 5: 00000000000000000000000000000101 +// 2: 00000000000000000000000000000010 +bar &= 2; // 0 +</pre> + +<h3 id="Присваивание_с_побитовым_XOR"><a name="Bitwise_XOR_assignment">Присваивание с побитовым XOR</a></h3> + +<p>Побитовый оператор присваивания XOR использует двоичное представление обоих операндов, выполняет побитовую XOR-операцию и присваивает результат переменной. Для получения более подробной информации см. {{jsxref("Operators/Bitwise_Operators", "Побитовый оператор XOR", "#Bitwise_XOR", 1)}}.</p> + +<h4 id="Синтаксис_11">Синтаксис</h4> + +<pre class="syntaxbox"><strong>Оператор:</strong> x ^= y +<strong>Значение:</strong> x = x ^ y +</pre> + +<h4 id="Примеры_11">Примеры</h4> + +<pre class="brush: js">var bar = 5; +bar ^= 2; // 7 +// 5: 00000000000000000000000000000101 +// 2: 00000000000000000000000000000010 +// ----------------------------------- +// 7: 00000000000000000000000000000111 +</pre> + +<h3 id="Присваиванием_с_побитовым_OR"><a name="Bitwise_OR_assignment">Присваиванием с побитовым OR</a></h3> + +<p>Побитовый оператор присваивания OR использует двоичное (бинарное) представление обоих операндов, выполняет побитовое ИЛИ для них и присваивает результат переменной. Дополнительную информацию см. {{jsxref("Operators/Bitwise_Operators", "Побитовый оператор OR", "#Bitwise_OR", 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> + +<h2 id="Примеры_13">Примеры</h2> + +<h3 id="Левый_операнд_с_другим_оператором_присваивания">Левый операнд с другим оператором присваивания</h3> + +<p>В необычных ситуациях оператор присваивания, например, <em>x += y</em> не идентичен выражению, <em>x = x + y</em>. Когда левый операнд оператора присваивания содержит оператор присваивания, левый операнд оценивается только один раз. Например:</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>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-11.13', 'Операторы присваивания')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-assignment-operators', 'Операторы присваивания')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{ CompatibilityTable() }}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{ CompatVersionUnknown() }}</td> + <td>{{ CompatVersionUnknown() }}</td> + <td>{{ CompatVersionUnknown() }}</td> + <td>{{ CompatVersionUnknown() }}</td> + <td>{{ CompatVersionUnknown() }}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{ CompatVersionUnknown() }}</td> + <td>{{ CompatVersionUnknown() }}</td> + <td>{{ CompatVersionUnknown() }}</td> + <td>{{ CompatVersionUnknown() }}</td> + <td>{{ CompatVersionUnknown() }}</td> + <td>{{ CompatVersionUnknown() }}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li><a href="/ru/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators">Арифметические операции</a></li> +</ul> |