Как работает алгоритм с нулевым значением? - PullRequest
1 голос
/ 18 мая 2019

Я просматривал главу карты в Javascript.info, и есть ссылка на алгоритм SameValueZero. Может кто-нибудь объяснить, как этот алгоритм работает простыми словами.

Я пытался перейти по ссылке, но ничего не нашел.

Ответы [ 2 ]

1 голос
/ 18 мая 2019

См. Спецификацию :

Абстрактная операция внутреннего сравнения SameValueZero (x, y), где x и y - значения языка ECMAScript, выдает true или false.Такое сравнение выполняется следующим образом:

  1. Если тип (x) отличается от типа (y), вернуть false.
  2. Если тип (x) равен Number,затем

    • Если x равен NaN, а y равен NaN, вернуть true.

    • Если x равен +0 и y равно -0, вернуть true.

    • Если x равен -0, а y равен +0, верните true.

    • Если x такое же числовое значение, что и y, вернитеtrue.

    • Return false.

  3. Return SameValueNonNumber (x, y).

По сути, это то же самое, что и тест ===, за исключением того, что когда x и y равны NaN, они также проходят тест.Вы можете реализовать это так:

const sameValueZero = (x, y) => x === y || (Number.isNaN(x) && Number.isNaN(y));

console.log(sameValueZero(0, 0));
console.log(sameValueZero(0, 1));
console.log(sameValueZero(0, NaN));
console.log(sameValueZero(NaN, NaN));
0 голосов
/ 18 мая 2019

Сравнение с нулевым значением при одинаковом значении * Алгоритм 1002 * ( см. Здесь, почему ), который является модифицированной версией сравнения со строгим равенством .Основное различие между ними заключается в NaN с учетом равенства NaN:

  • То же значение ноль считает, что NaN равен NaN
  • Строгое равенство учитывает, что NaN не равно NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...