Ответ
Оператор == (нестрогое равенство) сравнивает значения с приведением типов (type coercion). Если типы разные, JavaScript пытается преобразовать их к общему типу перед сравнением.
Оператор === (строгое равенство) проверяет равенство без приведения типов. Значения должны быть одинаковыми и типы данных должны совпадать.
Примеры:
console.log(5 == '5'); // true (строка '5' преобразуется в число 5)
console.log(5 === '5'); // false (разные типы: number vs string)
console.log(null == undefined); // true (специальное правило)
console.log(null === undefined); // false (разные типы)
console.log(0 == false); // true (false преобразуется в 0)
console.log(0 === false); // false (number vs boolean)
Практическое правило: Почти всегда используйте ===. Строгое сравнение предсказуемо и предотвращает ошибки из-за неявного приведения типов, что соответствует принципам написания чистого и надежного кода.