Вопрос: В чем разница между == и === операторы?
Быстрый ответ: Это оба операторы сравнения, но === Также сравните типы операндов.
Более длинный ответ: JavaScript и в основном TypeScript – это языки с неявное преобразование типа . Это означает, что они пытаются преобразовать переменные в «правильные» типы при выполнении операций.
let a = 1 let b = '1'; console.log(a+b) // "11"
Таким образом, при сравнении объектов он также попытается преобразовать их.
let a = 1 let b = '1' console.log(a == b) // true
Мы можем ссылаться на Эта таблица Для получения дополнительных примеров.
Реальный пример: Оказалось очень трудно дать какой-то реалистичный пример реальной проблемы, когда вы используете == вместо ===
Мы можем представить себе случай, когда API возвращает объект JSON, где некоторые поля может быть в 3 штатах – присутствующие, отсутствующие и нулевые.
[
...
{ "username": "admin", roles: ["admin"] },
{ "username": "hacker", roles: null }, // disabled
{ "username": "user" },
...
]
(Это странно, но у меня на самом деле был этот случай, когда API вернулся null вместо [] Если свойство объекта было пустым массивом 🤷)
Поэтому, если вы напишите условие, используя == будет ошибка.
// both these cases will be triggered
// since undefined == null is true
if (obj.prop == undefined) { ... }
if (obj.prop == null) { ... }
if (obj.prop) { ... }
//Да, этот пример все еще немного искусственный, но если вы можете придумать что -то другое, пожалуйста, поделитесь им в комментариях 🙏
Кстати, я опубликую больше забавных вещей здесь и на Twitter Давайте будем друзьями 👋
Оригинал: “https://dev.to/kozlovzxc/js-interview-in-2-minutes-vs-1f58”