From 841aae260382e2bf5ebb44d765d8c7301d27caab Mon Sep 17 00:00:00 2001 From: Alexey Istomin Date: Sat, 20 Mar 2021 18:37:44 +0300 Subject: Restore "ё" letter in Russian translation (#239) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs(ru): restore ё letter * docs(ru): resolve conflicts * refactor(idea): remove ide folder --- .../javascript/equality_comparisons_and_sameness/index.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'files/ru/web/javascript/equality_comparisons_and_sameness/index.html') diff --git a/files/ru/web/javascript/equality_comparisons_and_sameness/index.html b/files/ru/web/javascript/equality_comparisons_and_sameness/index.html index 99baf1e830..c4e2e48cd5 100644 --- a/files/ru/web/javascript/equality_comparisons_and_sameness/index.html +++ b/files/ru/web/javascript/equality_comparisons_and_sameness/index.html @@ -21,7 +21,7 @@ translation_of: Web/JavaScript/Equality_comparisons_and_sameness

Выбор оператора зависит от типа сравнения, которое необходимо произвести.

-

В общих чертах, двойное равно перед сравнением величин производит приведение типов; тройное равно сравнивает величины без приведения (если величины разных типов, вернет false, даже не сравнивая); ну и Object.is ведет себя так же, как и тройное равно, но со специальной обработкой для NaN, -0 и +0, возвращая false при сравнении  -0 и +0, и true для операции Object.is(NaN, NaN). (В то время как двойное или тройное равенство вернут false согласно стандарту IEEE 754.) Следует отметить, что все эти различия в сравнениях применимы лишь для примитивов. Для любых не примитивных объектов x и y, которые имеют одинаковые структуры, но представляют собой два отдельных объекта (переменные x и y не ссылаются на один и тот же объект), все операторы сравнения вернут false.

+

В общих чертах, двойное равно перед сравнением величин производит приведение типов; тройное равно сравнивает величины без приведения (если величины разных типов, вернёт false, даже не сравнивая); ну и Object.is ведёт себя так же, как и тройное равно, но со специальной обработкой для NaN, -0 и +0, возвращая false при сравнении  -0 и +0, и true для операции Object.is(NaN, NaN). (В то время как двойное или тройное равенство вернут false согласно стандарту IEEE 754.) Следует отметить, что все эти различия в сравнениях применимы лишь для примитивов. Для любых не примитивных объектов x и y, которые имеют одинаковые структуры, но представляют собой два отдельных объекта (переменные x и y не ссылаются на один и тот же объект), все операторы сравнения вернут false.

Сравнение с использованием ==

@@ -109,7 +109,7 @@ translation_of: Web/JavaScript/Equality_comparisons_and_sameness

В таблице выше, ToNumber(A) пытается перед сравнением привести свой аргумент к числу. Такое поведение эквивалентно +A (унарный оператор +).  Если ToPrimitive(A) получает объект в качестве аргумента, то производятся попытки привести его к примитиву, вызывая на нем методы A.toString и A.valueOf.

-

Традиционно (и в соответствии с ECMAScript), ни один из объектов не равен undefined или null.  Но большинство браузеров позволяет определенному классу объектов (в частности, объектам document.all для любой страницы) эмулировать значение undefined.  Оператор равенства вернёт значение true для null == A и undefined == A, тогда, и только тогда, когда объект эмулирует значение undefined. Во всех остальных случаях объект не может быть равен undefined или null.

+

Традиционно (и в соответствии с ECMAScript), ни один из объектов не равен undefined или null.  Но большинство браузеров позволяет определённому классу объектов (в частности, объектам document.all для любой страницы) эмулировать значение undefined.  Оператор равенства вернёт значение true для null == A и undefined == A, тогда, и только тогда, когда объект эмулирует значение undefined. Во всех остальных случаях объект не может быть равен undefined или null.

var num = 0;
 var obj = new String("0");
@@ -134,7 +134,7 @@ console.log(obj == undefined);
 
 

Строгое равенство с использованием ===

-

Строгое равно проверяет на равенство две величины, при этом тип каждой из величин перед сравнением не изменяется (не приводится). Если значения имеют различающиеся типы, то они не могут быть равными. С другой стороны все не числовые переменные, принадлежащие одному типу, считаются равными между собой, если содержат одинаковые величины. Ну и, наконец, числовые переменные считаются равными, если они имеют одинаковые значения, либо одна из них +0, а вторая -0. В то же время, если хотя бы одна из числовых переменных содержит значение NaN, выражение вернет false.

+

Строгое равно проверяет на равенство две величины, при этом тип каждой из величин перед сравнением не изменяется (не приводится). Если значения имеют различающиеся типы, то они не могут быть равными. С другой стороны все не числовые переменные, принадлежащие одному типу, считаются равными между собой, если содержат одинаковые величины. Ну и, наконец, числовые переменные считаются равными, если они имеют одинаковые значения, либо одна из них +0, а вторая -0. В то же время, если хотя бы одна из числовых переменных содержит значение NaN, выражение вернёт false.

var num = 0;
 var obj = new String("0");
@@ -153,7 +153,7 @@ console.log(obj === null); // false
 console.log(obj === undefined); // false
 
-

Практически всегда для сравнения следует использовать оператор строгого равенства. Для всех значений, за исключением числовых используется очевидная семантика: величина равна только сама себе. Как было сказано выше для числовых типов можно выделить два особых случая. Во-первых, сравнение +0 и -0. Знак для нуля введен для упрощения некоторых вычислений с плавающей запятой, однако, с точки зрения математики, разницы между +0 и -0 не существует, поэтому оператор строгого равенства считает их равными. Во-вторых, сравнение величин NaN. NaN (Not a number) представляет из себя значение не определенной величины, которое применяется для не четко определенных математических задач (например +∞ + -∞). Для оператора строго равенства NaN не равен ни одной из величин, в том числе и самому себе (единственный случай, когда (x!==x) вернет true).

+

Практически всегда для сравнения следует использовать оператор строгого равенства. Для всех значений, за исключением числовых используется очевидная семантика: величина равна только сама себе. Как было сказано выше для числовых типов можно выделить два особых случая. Во-первых, сравнение +0 и -0. Знак для нуля введён для упрощения некоторых вычислений с плавающей запятой, однако, с точки зрения математики, разницы между +0 и -0 не существует, поэтому оператор строгого равенства считает их равными. Во-вторых, сравнение величин NaN. NaN (Not a number) представляет из себя значение не определённой величины, которое применяется для не чётко определённых математических задач (например +∞ + -∞). Для оператора строго равенства NaN не равен ни одной из величин, в том числе и самому себе (единственный случай, когда (x!==x) вернёт true).

Равенство одинаковых величин

@@ -169,7 +169,7 @@ function attemptMutation(v) }
-

При попытке изменения неизменяемого свойства, вызов Object.defineProperty выбросит исключение, однако, если новое свойство равняется старому, изменений не произойдет и исключение не будет выброшено. Если v содержит -0, изменений не произойдет, а значит, код отработает без выброса исключений. Однако, если же v содержит +0, Number.NEGATIVE_ZERO утратит свою неизменяемую величину. Именно для сравнения нового и текущего неизменяемых свойств используется сравнение одинаковых величин, представленное методом Object.is.

+

При попытке изменения неизменяемого свойства, вызов Object.defineProperty выбросит исключение, однако, если новое свойство равняется старому, изменений не произойдёт и исключение не будет выброшено. Если v содержит -0, изменений не произойдёт, а значит, код отработает без выброса исключений. Однако, если же v содержит +0, Number.NEGATIVE_ZERO утратит свою неизменяемую величину. Именно для сравнения нового и текущего неизменяемых свойств используется сравнение одинаковых величин, представленное методом Object.is.

Спецификации для равенства, строгого равенства и равенства одинаковых величин

-- cgit v1.2.3-54-g00ecf