Оператор === в JavaScript
- Что делает оператор ===
- Синтаксис
- Сравнение значения и типа
- Отличие от ==
- Оператор === в условиях
- Объекты и массивы
- Итого
Оператор === проверяет строгое равенство. Он возвращает true, если два значения равны и имеют одинаковый тип данных.
console.log(10 === 10);
console.log('JavaScript' === 'JavaScript');
Результат:
true
true
Если значение или тип данных отличается, результат будет false.
Что делает оператор ===
=== сравнивает две части выражения без автоматического преобразования типов.
console.log(10 === '10');
Результат:
false
На экране значения похожи, но для JavaScript это разные вещи: 10 - число, а ‘10’ - строка.
Синтаксис
значение1 === значение2
Оператор === возвращает boolean:
true- значения строго равны;false- значения не равны или отличаются по типу.
let result = 5 === 5;
console.log(result);
Результат:
true
Сравнение значения и типа
Строгое равенство проверяет не только содержимое, но и тип данных.
console.log(18 === 18);
console.log('18' === 18);
console.log(true === true);
console.log(true === 'true');
Результат:
true
false
true
false
Это делает код предсказуемее. JavaScript не пытается сам превратить строку в число или boolean в строку.
Отличие от ==
В JavaScript есть оператор ==. Он тоже сравнивает значения, но перед сравнением может преобразовать типы.
console.log(10 == '10');
console.log(10 === '10');
Результат:
true
false
В первом случае JavaScript приводит значения к общему типу и считает их равными. Во втором случае типы разные, поэтому строгое равенство возвращает false.
На практике для равенства чаще используют ===. Так проще понимать, что именно сравнивается.
Оператор === в условиях
Оператор === часто используют внутри if.
let role = 'admin';
if (role === 'admin') {
console.log('Открыть панель управления');
}
Код внутри if выполнится только если значение переменной role строго равно строке ‘admin’.
Еще один пример:
let answer = prompt('Сколько будет 2 + 2?');
if (Number(answer) === 4) {
console.log('Верно');
}
prompt() возвращает строку, поэтому перед сравнением мы явно превращаем ответ в число через Number().
Объекты и массивы
С объектами и массивами === работает немного иначе, чем может показаться на первый взгляд. Он сравнивает не содержимое, а ссылку на объект.
console.log({} === {});
console.log([] === []);
Результат:
false
false
Два пустых объекта выглядят одинаково, но это два разных объекта в памяти.
Если сравнить одну и ту же ссылку, результат будет true:
let user = { name: 'Анна' };
let sameUser = user;
console.log(user === sameUser);
Результат:
true
Итого
Оператор === проверяет строгое равенство: совпадает ли значение и тип данных. Он не делает автоматическое преобразование типов, поэтому обычно понятнее и безопаснее, чем ==. В условиях === помогает точно проверить нужное значение. При сравнении объектов и массивов важно помнить, что сравнивается ссылка, а не содержимое.