Рубрики
Без рубрики

JavaScript – двойные равны против тройных равных | Беспокойным404 |. Середина

Основы серии JavaScript Part1.

Автор оригинала: Mohit Rawat.

Большой вопрос

В чем разница между === ‘. Это самая основная концепция JavaScript, но все же люди считают трудно понять. Разница только в типе проверяется или это что-то большее. Чтобы понять это, мы должны прочитать спецификацию Ecmascript.

Тройной равняется (строгое равенство)

1 * ptxqpjtxojsy4xap_ioomg.jpeg.

Давайте пройдемся через спецификацию для строгого равенства. Я обнаружил, что решение проблем является наилучшим способом изучения, поэтому давайте попробуем ответить на несколько вопросов из вышеуказанной информации.

1 * gjphltwavmpebhf8ikqrmg.png.

Надеюсь, у большинства из вас было бы получить строку 1 и 2 справа. Но в линейке3 JS делает что-то отличное от норм. Нан по сравнению с собой не равен 🤯. Если мы посмотрим внимательно на спецификацию, в строке 4.а и 4.b, мы узнаем, что если либо значение NAN, он всегда будет возвращать false. Странно, верно? Давайте посмотрим на что-то даже вредное.

+0 === -0 // true

+0 равен -0. Так что это означает, что они представляют то же самое? Ответ – нет! ТОЧНО НЕТ!!. Они не такое же значение, но для строгого равенства JS считает их равными, которые я думаю на 100% неправильно !. Я выложу об этом нюанте в другом посте, пока вернемся к теме.

Забавный факт: подтвердить, что они не такие, вы можете проверить объект. (+0, -0).

Из спецификации мы можем заключить следующие вещи:

  1. Если типы разные, то это всегда будет возвращать ложь.
  2. Он проверяет точное значение для LHS и RHS (кроме в определенных случаях).

Двойной равняется (абстрактное равенство)

1 * ZAF2KQIOBKLLTDSM741RNA.PNG

Прочитав это, мы знаем, что то, что то, что равно проверяет значение, и тройные равные проверки как тип, так и значение «это просто неправильное понятие, и это происходит, потому что многие книги, блоги и учебные пособия будут использовать это то же самое предложение, и они на 100% , Итак, люди никогда не следят за постом или блогем бессмысленно.

«Всегда читайте спецификацию»

Что говорит нам, что если типы не равны, JS попробует «принуждать» их в том же типе, если это может.

Если даже одно из ценностей есть номер, он постарается только к номеру другого типа.

2 == '2'; // gets converted to
2 == 2; // now since type are equal we perform triple equality check
2 === 2; // true

В приведенном выше примере мы видим, что мы видим, что строка «2» превращается в число 2. Затем он снова вызывает оператор «==» и теперь, поскольку тип равна выполняет проверки тройного равенства.

1 == true; // true
0 == false; // true
'' == 0; // true

В приведенном выше примере,

  1. В строке 1 JS преобразует true на номер, который возвращает 1. Затем он проверяет и возвращает true.
  2. В строке 2 JS преобразует false на номер, который возвращает 0. Тогда он проверяет и возвращает true.
  3. В строке 3 JS преобразует «» string на номер, который возвращает 0. Тогда он проверяет, и возвращает true.

Теперь мы попадаем в некоторые угловые случаи двойного равных. Как вы думаете, что вывод будет из этих строк.

1 * rgpsoktrh9zylrqussnow.jpeg

Если ваш ответ был правдой, правда, ложь. Поздравляем, что у вас лучше понять двойной равных, то большинство разработчиков JS там. Для тех из вас, кто ошибился неправильно, будьте счастливы, потому что вы собираетесь узнать что-то новое. И это весь точку этого блога.

  1. В линии1 JS пытается преобразовать «[]» в примитивный тип и преобразует массив в пустую строку «». Теперь он проверяет «», что вернется правда.

  2. В строке2 JS пытается преобразовать «[[]]» в примитивный тип, и преобразует массив в пустую строку «» (запомнить глубину не имеет значения, если массив имеет пустое значение). Теперь он проверяет «», что вернется правда.

  3. Но почему нет [] == [[[]], так как они оба являются “. Попробуйте прочитать спецификацию еще раз, я подожду. Да !!, вы пропустили строку 1, что говорит нам, что если типы равны, мы выполняем строгое равенство и значения не равны в этом случае.

Если вы думаете, проще в использовании == “, поскольку нам не нужно беспокоиться обо всех правилах принуждения, то вы не могли быть более неправильными, мой друг. Вы всегда должны знать, почему что-то происходит, это будет Не только увеличивать свои знания js, но также поможет вам написать лучший код.

Поэтому теперь у нас есть лучшее понимание того, как работает двойное равенство и тройное равенство.

Ключевые вынос

  1. Как вы видели, что мы можем использовать «==», если мы хотим привлечь некоторые значения и проверять, являются ли они одинаковыми или нет. Мы должны знать типы, которые наши переменные должны будут не попасть в ловушки.

  2. Тройной равняется, как сейчас превосходит двойной равных, у обоих есть некоторые позитивы, так и некоторые негативы, мы должны попытаться избежать их.

Заключение

Попробуйте узнать больше о принуждениях, это, безусловно, поможет вам знать, почему есть ловушки использования === ‘всегда только потому, что все его используют. Постарайтесь познакомиться о незначительных вещах, потому что вы никогда не знаете, какие новые вещи вы узнаете.