Проверяет понимание разницы между примитивными строками и объектами String при использовании операторов == и === в JavaScript.
В JavaScript строки могут быть как примитивами, так и объектами, созданными через конструктор String. При использовании операторов равенства поведение различается из-за механизма приведения типов.
Оператор == выполняет приведение типов перед сравнением. Если один операнд — примитивная строка, а другой — объект String, объект преобразуется в примитив с помощью метода valueOf или toString. В результате оба значения становятся строками, и сравнение возвращает true.
let primitive = 'hello';
let object = new String('hello');
console.log(primitive == object); // trueОператор === сравнивает и значение, и тип без приведения. Примитивная строка имеет тип string, а объект String — тип object. Поэтому сравнение возвращает false.
console.log(primitive === object); // falseНа практике рекомендуется всегда использовать примитивные строки (литералы) и оператор === для избежания неожиданных результатов. Объекты String редко нужны, но могут встречаться в старом коде или при работе с некоторыми API.
Понимание разницы между примитивными строками и объектами String помогает писать предсказуемый код и избегать ошибок, связанных с приведением типов. Используйте строгое равенство для надёжного сравнения строк.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию