Большой вопрос
В чем разница между === ‘. Это самая основная концепция JavaScript, но все же люди считают трудно понять. Разница только в типе проверяется или это что-то большее. Чтобы понять это, мы должны прочитать спецификацию Ecmascript.
Тройной равняется (строгое равенство)
Давайте пройдемся через спецификацию для строгого равенства. Я обнаружил, что решение проблем является наилучшим способом изучения, поэтому давайте попробуем ответить на несколько вопросов из вышеуказанной информации.
Надеюсь, у большинства из вас было бы получить строку 1 и 2 справа. Но в линейке3 JS делает что-то отличное от норм. Нан по сравнению с собой не равен 🤯. Если мы посмотрим внимательно на спецификацию, в строке 4.а и 4.b, мы узнаем, что если либо значение NAN, он всегда будет возвращать false. Странно, верно? Давайте посмотрим на что-то даже вредное.
+0 === -0 // true
+0 равен -0. Так что это означает, что они представляют то же самое? Ответ – нет! ТОЧНО НЕТ!!. Они не такое же значение, но для строгого равенства JS считает их равными, которые я думаю на 100% неправильно !. Я выложу об этом нюанте в другом посте, пока вернемся к теме.
Забавный факт: подтвердить, что они не такие, вы можете проверить объект. (+0, -0).
Из спецификации мы можем заключить следующие вещи:
- Если типы разные, то это всегда будет возвращать ложь.
- Он проверяет точное значение для LHS и RHS (кроме в определенных случаях).
Двойной равняется (абстрактное равенство)
Прочитав это, мы знаем, что то, что то, что равно проверяет значение, и тройные равные проверки как тип, так и значение «это просто неправильное понятие, и это происходит, потому что многие книги, блоги и учебные пособия будут использовать это то же самое предложение, и они на 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 JS преобразует true на номер, который возвращает 1. Затем он проверяет и возвращает true.
- В строке 2 JS преобразует false на номер, который возвращает 0. Тогда он проверяет и возвращает true.
- В строке 3 JS преобразует «» string на номер, который возвращает 0. Тогда он проверяет, и возвращает true.
Теперь мы попадаем в некоторые угловые случаи двойного равных. Как вы думаете, что вывод будет из этих строк.
Если ваш ответ был правдой, правда, ложь. Поздравляем, что у вас лучше понять двойной равных, то большинство разработчиков JS там. Для тех из вас, кто ошибился неправильно, будьте счастливы, потому что вы собираетесь узнать что-то новое. И это весь точку этого блога.
В линии1 JS пытается преобразовать «[]» в примитивный тип и преобразует массив в пустую строку «». Теперь он проверяет «», что вернется правда.
В строке2 JS пытается преобразовать «[[]]» в примитивный тип, и преобразует массив в пустую строку «» (запомнить глубину не имеет значения, если массив имеет пустое значение). Теперь он проверяет «», что вернется правда.
Но почему нет [] == [[[]], так как они оба являются “. Попробуйте прочитать спецификацию еще раз, я подожду. Да !!, вы пропустили строку 1, что говорит нам, что если типы равны, мы выполняем строгое равенство и значения не равны в этом случае.
Если вы думаете, проще в использовании == “, поскольку нам не нужно беспокоиться обо всех правилах принуждения, то вы не могли быть более неправильными, мой друг. Вы всегда должны знать, почему что-то происходит, это будет Не только увеличивать свои знания js, но также поможет вам написать лучший код.
Поэтому теперь у нас есть лучшее понимание того, как работает двойное равенство и тройное равенство.
Ключевые вынос
Как вы видели, что мы можем использовать «==», если мы хотим привлечь некоторые значения и проверять, являются ли они одинаковыми или нет. Мы должны знать типы, которые наши переменные должны будут не попасть в ловушки.
Тройной равняется, как сейчас превосходит двойной равных, у обоих есть некоторые позитивы, так и некоторые негативы, мы должны попытаться избежать их.
Заключение
Попробуйте узнать больше о принуждениях, это, безусловно, поможет вам знать, почему есть ловушки использования === ‘всегда только потому, что все его используют. Постарайтесь познакомиться о незначительных вещах, потому что вы никогда не знаете, какие новые вещи вы узнаете.