diff options
author | Florian Dieminger <me@fiji-flo.de> | 2021-02-11 18:27:57 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-11 18:27:57 +0100 |
commit | 38577fa9b17463b731d503d61bddd399dadea6ac (patch) | |
tree | 73b60b0d72190a8da1c1baa063d690f935fb5120 /files/ru/conflicting/web/javascript/reference/operators/index.html | |
parent | 609ee7efcfe881caa08237948e1ed3252e60afa1 (diff) | |
parent | 786d51e5e35f25c06fc64083574a435e240b2a54 (diff) | |
download | translated-content-38577fa9b17463b731d503d61bddd399dadea6ac.tar.gz translated-content-38577fa9b17463b731d503d61bddd399dadea6ac.tar.bz2 translated-content-38577fa9b17463b731d503d61bddd399dadea6ac.zip |
Merge pull request #42 from fiji-flo/unslugging-ru
Unslugging ru
Diffstat (limited to 'files/ru/conflicting/web/javascript/reference/operators/index.html')
-rw-r--r-- | files/ru/conflicting/web/javascript/reference/operators/index.html | 292 |
1 files changed, 292 insertions, 0 deletions
diff --git a/files/ru/conflicting/web/javascript/reference/operators/index.html b/files/ru/conflicting/web/javascript/reference/operators/index.html new file mode 100644 index 0000000000..85a37e17a8 --- /dev/null +++ b/files/ru/conflicting/web/javascript/reference/operators/index.html @@ -0,0 +1,292 @@ +--- +title: Арифметические операции +slug: conflicting/Web/JavaScript/Reference/Operators +tags: + - JavaScript + - Операторы +translation_of: Web/JavaScript/Reference/Operators +translation_of_original: Web/JavaScript/Reference/Operators/Arithmetic_Operators +original_slug: Web/JavaScript/Reference/Operators/Arithmetic_Operators +--- +<div> +<div>{{jsSidebar("Operators")}}</div> +</div> + +<p><strong>Арифметические операции</strong> принимают в качестве операндов числовые значения (это может быть и литерал и переменная) и возвращают результат в виде одного числового значения. Стандартными арифметическими операциями являются сложение (<code>+</code>), вычитание (<code>-</code>), умножение (<code>*</code>) и деление (<code>/</code>).</p> + +<h2 id="Сложение"><a name="Addition">Сложение (+)</a></h2> + +<p>Оператор сложения возвращает сумму числовых операндов или объединяет строки.</p> + +<h3 id="Syntax" name="Syntax">Синтаксис</h3> + +<pre class="syntaxbox"><strong>Operator:</strong> x + y +</pre> + +<h3 id="Examples" name="Examples">Примеры</h3> + +<pre class="brush: js">// Number + Number -> сложение +1 + 2 // 3 + +// Boolean + Number -> сложение +true + 1 // 2 + +// Boolean + Boolean -> сложение +false + false // 0 + +// Number + String -> конкатенация +5 + "foo" // "5foo" + +// String + Boolean -> конкатенация +"foo" + false // "foofalse" + +// String + String -> конкатенация +"foo" + "bar" // "foobar" +</pre> + +<h2 id="Вычитание_-"><a name="Subtraction">Вычитание (-)</a></h2> + +<p>Оператор вычитания вычитает один операнд из другого и возвращает разницу.</p> + +<h3 id="Syntax_2" name="Syntax_2">Синтаксис</h3> + +<pre class="syntaxbox"><strong>Operator:</strong> x - y +</pre> + +<h3 id="Examples_2" name="Examples_2">Примеры</h3> + +<pre class="brush: js">5 - 3 // 2 +3 - 5 // -2 +"foo" - 3 // NaN</pre> + +<h2 id="Деление"><a name="Division">Деление (/)</a></h2> + +<p>Оператор деления производит деление его операндов, где левый операнд - делимый, а правый - делитель.</p> + +<h3 id="Syntax_3" name="Syntax_3">Синтаксис</h3> + +<pre class="syntaxbox"><strong>Operator:</strong> x / y +</pre> + +<h3 id="Examples_3" name="Examples_3">Примеры</h3> + +<pre class="brush: js">1 / 2 // возвращает 0.5 в JavaScript +1 / 2 // возвращает 0 в Java +// (так числа не с плавающими точками) + +1.0 / 2.0 // возвращает 0.5 и в JavaScript и в Java + +2.0 / 0 // возвращает Infinity в JavaScript +2.0 / 0.0 // тоже возвращает Infinity +2.0 / -0.0 // возвращает -Infinity в JavaScript</pre> + +<h2 id="Умножение_*"><a name="Multiplication">Умножение (*)</a></h2> + +<p>Оператор умножения возвращает произведение операндов.</p> + +<h3 id="Syntax_4" name="Syntax_4">Синтаксис</h3> + +<pre class="syntaxbox"><strong>Operator:</strong> x * y +</pre> + +<h3 id="Examples_4" name="Examples_4">Примеры</h3> + +<pre class="brush: js">2 * 2 // 4 +-2 * 2 // -4 +Infinity * 0 // NaN +Infinity * Infinity // Infinity +"foo" * 2 // NaN +</pre> + +<h2 id="Остаток_от_деления"><a name="Remainder">Остаток от деления (%)</a></h2> + +<p>Оператор возвращает целый остаток от деления левого операнда на правый. Возвращаемое значение всегда получает знак делимого, а не делителя. Он использует встроенную функцию <code>modulo</code>, для получения результата, которая является целочисленным остатком деления <code>var1</code> на <code>var2</code> — например— <code>var1</code> modulo <code>var2</code>. <a href="http://wiki.ecmascript.org/doku.php?id=strawman:modulo_operator" title="http://wiki.ecmascript.org/doku.php?id=strawman:modulo_operator">Есть предложение добавить оператор modulo в будущие версии ECMAScript</a>, с той разницей, что оператор будет брать знак делителя, а не делимого.</p> + +<h3 id="Syntax_5" name="Syntax_5">Синтаксис</h3> + +<pre class="syntaxbox"><strong>Оператор:</strong> var1 % var2 +</pre> + +<h3 id="Examples_5" name="Examples_5">Примеры</h3> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="number token">12</span> <span class="operator token">%</span> <span class="number token">5</span> <span class="comment token">// 2</span> +<span class="operator token">-</span><span class="number token">1</span> <span class="operator token">%</span> <span class="number token">2</span> <span class="comment token">// -1</span> +<span class="number token">NaN</span> <span class="operator token">%</span> <span class="number token">2</span> <span class="comment token">// NaN</span> +<span class="number token">1</span> <span class="operator token">%</span> <span class="number token">2</span> <span class="comment token">// 1</span> +<span class="number token">2</span> <span class="operator token">%</span> <span class="number token">3</span> <span class="comment token">// 2</span> +<span class="operator token">-</span><span class="number token">4</span> <span class="operator token">%</span> <span class="number token">2</span> <span class="comment token">// -0</span> +<span class="number token">5.5</span> <span class="operator token">%</span> <span class="number token">2</span> <span class="comment token">// 1.5</span></code></pre> + +<h2 id="Возведение_в_степень_**"><a name="Exponentiation">Возведение в степень (**)</a></h2> + +<p>Оператор возведения в степень возвращает результат первого операнда в степень. это, <code>var1</code><sup><code>var2</code></sup>, в предыдущем выражении, где <code>var1</code> и <code>var2</code> - переменные. Он право ассоциативен. <code>a ** b ** c</code> равно <code>a ** (b ** c)</code>.</p> + +<h3 id="Синтаксис">Синтаксис</h3> + +<pre class="syntaxbox"><strong>Оператор:</strong> var1 ** var2</pre> + +<h3 id="Замечания">Замечания</h3> + +<p>Во многих языках, таких как PHP и Python и других, есть оператор возведения возведения в степень (обычно ^ или **), оператор определён имеющим приоритет выше, чем у унарных операторов, таких как унарный + и унарный -, но есть несколько исключений. Например, в Bash оператор ** создан имеющим приоритет ниже, чем у унарных операторов. В JavaScript невозможно написать двухсмысленное выражение, т.е. вы не можете ставить унарный оператор (<code>+/-/~/!/delete/void/typeof</code>) непосредственно перед базовым числом.</p> + +<pre class="brush: js">-2 ** 2; +// 4 в Bash, -4 в других языках. +// Это некорректно в JavaScript, т.е. операция двухсмыслена. + + +-(2 ** 2); +// -4 в JavaScript, намерения автора однозначны.</pre> + +<h3 id="Примеры">Примеры</h3> + +<pre class="brush: js">2 ** 3 // 8 +3 ** 2 // 9 +3 ** 2.5 // 15.588457268119896 +10 ** -1 // 0.1 +NaN ** 2 // NaN + +2 ** 3 ** 2 // 512 +2 ** (3 ** 2) // 512 +(2 ** 3) ** 2 // 64</pre> + +<p>Изменим знак результата возведения в степень:</p> + +<pre class="brush: js">-(2 ** 2) // -4</pre> + +<p>Насильная установка основания как отрицательного числа:</p> + +<pre class="brush: js">(-2) ** 2 // 4</pre> + +<h2 id="Инкремент"><a name="Increment">Инкремент (++)</a></h2> + +<p>Оператор инкремента увеличивает на единицу(инкрементирует) операнд и возвращает значение.</p> + +<ul> + <li>Если операция используется как постфикс, с оператором после операнда (например, x++), значение операнда возвращается, а затем увеличивается на единицу.</li> + <li>Если используется префиксная форма с оператором перед операндом (например, ++x), значение операнда возвращается увеличенным на единицу.</li> +</ul> + +<h3 id="Syntax_6" name="Syntax_6">Синтаксис</h3> + +<pre class="syntaxbox"><strong>Оператор:</strong> x++ или ++x +</pre> + +<h3 id="Examples_6" name="Examples_6">Примеры</h3> + +<pre class="brush: js">// Постфиксный +var x = 3; +y = x++; // y = 3, x = 4 + +// Префиксный +var a = 2; +b = ++a; // a = 3, b = 3 +</pre> + +<h2 id="sect1"></h2> + +<h2 id="Декремент_--"><a name="Decrement">Декремент (--)</a></h2> + +<p>Операция декремента уменьшает на 1 (отнимает единицу) свой операнд и возвращает значение.</p> + +<ul> + <li>Если операция используется как постфикс (например, x--), значение операнда возвращается, а затем уменьшается на единицу.</li> + <li>Если используется префиксная форма (например, --x), значение операнда возвращается уменьшенным на единицу.</li> +</ul> + +<h3 id="Syntax_7" name="Syntax_7">Синтаксис</h3> + +<pre class="syntaxbox"><strong>Оператор:</strong> x-- или --x +</pre> + +<h3 id="Examples_7" name="Examples_7">Примеры</h3> + +<pre class="brush: js">// Постфиксный +var x = 3; +y = x--; // y = 3, x = 2 + +// Префиксный +var a = 2; +b = --a; // a = 1, b = 1 +</pre> + +<h2 id="Унарный_минус_-"><a name="Unary_negation">Унарный минус (-)</a></h2> + +<p>Унарный минус ставится перед своим операндом и возвращает его математическое отрицание.</p> + +<h3 id="Syntax_8" name="Syntax_8">Синтаксис</h3> + +<pre class="syntaxbox"><strong>Оператор:</strong> -x +</pre> + +<h3 id="Examples_8" name="Examples_8">Примеры</h3> + +<pre class="brush: js">var x = 3; +y = -x; // y = -3, x = 3 +</pre> + +<h2 id="Унарный_плюс"><a name="Unary_plus">Унарный плюс</a> (+)</h2> + +<p>Оператор унарный плюс предшедствует своему операнду и оценивает его, пытается преобразовать его в число, если он им не является. Хотя, унарное отрицание (-) также конвертирует не числа, унарный плюс - быстрейший и предпочитаемый способ конвертирования чего-либо в число потому, что он не выполняет каких-либо операций с числом. Он может конвертировать строковые представления целых и чисел с плавающей точкой, а также нестроковые значения <code>true</code>, <code>false</code> и <code>null</code>. Поддерживаются числа в десятичном и шестнадцатиричном (с префиксом "0x") формате. Отрицательные числа тоже поддерживаются (но не 16-ричные). Если он не может вычислить конкретное значение, выполнится как <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/NaN">NaN</a>.</p> + +<h3 id="Syntax_9" name="Syntax_9">Синтаксис</h3> + +<pre class="syntaxbox"><strong>Оператор:</strong> +x +</pre> + +<h3 id="Examples_9" name="Examples_9">Примеры</h3> + +<pre class="brush: js">+3 // 3 ++"3" // 3 ++true // 1 ++false // 0 ++null // 0 +</pre> + +<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')}}</td> + <td>{{Spec2('ES1')}}</td> + <td>Изначальное определение</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-11.3')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Определено в нескольких секциях специфии: <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.6">Additive operators</a>, <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.5">Multiplicative operators</a>, <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.3">Postfix expressions</a>, <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.4">Unary operators</a>.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-postfix-expressions')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Определено в нескольких секциях специфии: <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-additive-operators">Additive operators</a>, <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-multiplicative-operators">Multiplicative operators</a>, <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-postfix-expressions">Postfix expressions</a>, <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-unary-operators">Unary operators</a>.</td> + </tr> + <tr> + <td>{{SpecName('ES7', '#sec-postfix-expressions')}}</td> + <td>{{Spec2('ES7')}}</td> + <td>Добавлен <a href="https://github.com/rwaldron/exponentiation-operator">Оператор возведения в степень</a>.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-postfix-expressions')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + + + +<p>{{Compat("javascript.operators.arithmetic")}}</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li><a href="/ru/docs/Web/JavaScript/Reference/Operators/Assignment_Operators">Операторы присваивания</a></li> +</ul> |