Сравнение типов данных
В чем разница между null и undefined?
Разница между null и undefined в JavaScript:
-
undefined:-
Значение: Переменная объявлена, но не инициализирована.
-
Тип:
undefined. -
Примеры использования:
let a; console.log(a); // undefined
-
-
null:-
Значение: Явное указание на отсутствие значения или “ничто”.
-
null является единственным значением примитивного типа Null. typeof null возвращает строку “object” из-за исторической особенности JavaScript.
-
Примеры использования:
let b = null; console.log(b); // null
-
Основные различия:
-
Назначение:
undefinedозначает, что переменная не инициализирована, аnullуказывает на намеренное отсутствие значения. -
null является единственным значением примитивного типа Null. typeof null возвращает строку “object” из-за исторической особенности JavaScript.
В чем разница между операторами "==" и "==="?
Разница между "==" и "===" в JavaScript
-
Оператор “==” (нестрогое равенство):
-
Сравнивает значения после приведения типов.
-
Пример:
console.log(2 == '2'); // true (число и строка приводятся к одному типу) console.log(null == undefined); // true
-
-
Оператор “===” (строгое равенство):
-
Сравнивает значения без приведения типов.
-
Пример:
console.log(2 === '2'); // false (разные типы: число и строка) console.log(null === undefined); // false
-
Основные различия:
-
Приведение типов: “==” приводит операнды к одному типу перед сравнением, а “===” не приводит и сравнивает типы и значения напрямую.
-
Использование: “===” предпочтительнее использовать для точных сравнений, чтобы избежать непредвиденных результатов из-за приведения типов.
Почему результатом сравнения двух похожих объектов является false?
В JavaScript объекты сравниваются по ссылке, а не по значению. Даже если два объекта имеют одинаковые свойства и значения, они будут считаться разными, если ссылаются на разные места в памяти.
Пример:
let obj1 = { a: 1 };
let obj2 = { a: 1 };
console.log(obj1 === obj2); // false
console.log(obj1 == obj2); // false
Объяснение:
-
Сравнение по ссылке:
obj1иobj2содержат одинаковые данные, но находятся в разных местах памяти. Сравнение этих объектов будетfalse, так как их ссылки разные. -
Сравнение примитивов: Для примитивных типов (числа, строки, логические значения и т. д.) сравнение выполняется по значению, а не по ссылке.