|
Отличие между операторами !== и != в строгости сравнения. В JavaScript есть строгие (`!==`/`===`) и нестрогие (`!=`/`==`) операторы сравнения.
Основные отличия:
| Оператор |
Название |
Сравнивает |
Преобразование типов |
| `!==` |
Строгое неравенство |
И значение, И тип |
НЕ преобразует типы |
| `!=` |
Нестрогое неравенство |
Только значение |
Автоматически преобразует типы |
[Практические примеры]
// Пример 1: Число и строка с тем же числом const num = 5 const str = '5'
console.log(num !== str) // true (разные типы: number vs string)
console.log(num != str) // false (преобразовано к одному типу: 5 == 5)
// Пример 2: null и undefined
console.log(null !== undefined) // true (разные типы)
console.log(null != undefined) // false (специальное правило: они равны при нестрогом сравнении)
Для сравнения JSON-строк обычно рекомендуется использовать строгие операторы (`!==`):
if (JSON.stringify(currentConfig.value) !== JSON.stringify(originalConfig.value)) { // Действия при различии
}
Почему `!==` лучше:
1. Предсказуемость — не происходит скрытого преобразования типов. 2. Безопасность — избегаем неожиданного поведения 3. Стандарт — в современном JavaScript это общепринятая практика.
[Опасность нестрогого сравнения]
// Потенциальная проблема: const a = 0 const b = false const c = ''
console.log(a !== b) // true (0 !== false)
console.log(a != b) // false (0 == false) ← может быть неочевидно!
console.log(b !== c) // true (false !== '')
console.log(b != c) // false (false == '') ← снова неочевидно!
Рекомендация: всегда используйте `!==` и `===` в современном JavaScript, кроме редких случаев, когда вам специально нужно нестрогое сравнение (например, проверка на `null` или `undefined` одновременно):
// Допустимое использование != if (value != null) { // Пропустит и null, и undefined
}
// Эквивалентно: if (value !== null && value !== undefined) { // Более явно, но длиннее
}
|