0Pricing
JavaScript Academy · Урок

Нестрогое и строгое равенство

Разберитесь в сравнении с помощью == и ===.

«Нестрогое и строгое равенство» — бесплатный урок JavaScript Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения JavaScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс JavaScript Academy содержит 4 уроков всего.

Два оператора равенства

В JavaScript есть два оператора равенства. Строгое равенство (тройной знак равенства) сравнивает значения без преобразования. Нестрогое равенство (двойной знак равенства) приводит типы перед сравнением.

console.log(1 === 1)
console.log(1 == "1")

Строгое равенство

Строгое равенство возвращает значение «истина» только тогда, когда совпадают и тип, и значение. Приведение типов не выполняется.

console.log(5 === 5)
console.log(5 === "5")
console.log(true === 1)

Нестрогое равенство приводит типы

Нестрогое равенство пытается привести операнды к общему типу перед сравнением, что может давать неожиданные результаты «истина».

console.log(5 == "5")
console.log(true == 1)
console.log(0 == false)

Число и строка

При сравнении числа и строки с помощью нестрогого равенства строка сначала преобразуется в число.

console.log("10" == 10)
console.log("10" === 10)

Приведение логического значения

При нестрогом равенстве логическое значение преобразуется в число: истина становится 1, а ложь — 0 перед сравнением.

console.log(true == 1)
console.log(false == 0)
console.log(true == 2)

Нулевое и неопределённое значения

Нестрогое равенство считает нулевое и неопределённое значения равными друг другу, но не равными чему-либо ещё, например нулю.

console.log(null == undefined)
console.log(null === undefined)
console.log(null == 0)

Исключение NaN

NaN не равно ничему, включая само себя, ни при одном из операторов. Используйте Number.isNaN для проверки этого значения.

console.log(NaN === NaN)
console.log(NaN == NaN)
console.log(Number.isNaN(NaN))

Ссылки на объекты

Объекты сравниваются по ссылке, а не по содержимому. Два разных объекта с одинаковыми свойствами никогда не бывают равны.

const a = { x: 1 }
const b = { x: 1 }
console.log(a === b)
console.log(a === a)

Неожиданные результаты нестрогого равенства

Нестрогое равенство может давать результаты, противоречащие интуиции. Пустая строка равна нулю, а пустой массив после приведения равен ложному значению.

console.log("" == 0)
console.log([] == false)
console.log("0" == false)

Отдавайте предпочтение строгому равенству

Большинство руководств по стилю рекомендует по умолчанию использовать строгое равенство, чтобы избежать скрытых ошибок приведения типов. Используйте нестрогое равенство только при наличии осознанной причины.

const value = "42"
if (value === "42") {
  console.log("matched as string")
}

Проверка на нулевое или неопределённое значение

Одно из общепринятых применений нестрогого равенства — одновременная проверка на нулевое и неопределённое значения, поскольку такой шаблон охватывает оба случая.

function check(v) {
  if (v == null) {
    return "missing"
  }
  return "present"
}
console.log(check(undefined))
console.log(check(0))

Быстрая проверка

Проверьте свои знания о равенстве.

Повторение

Повторение: Тройное равенство избегает приведения типов, а двойное равенство его выполняет.

  • Строгое равенство проверяет тип и значение
  • Нестрогое равенство сначала приводит значения к общему типу
  • Нулевое значение равно неопределённому при нестрогом сравнении и только при нём
  • По умолчанию отдавайте предпочтение строгому равенству
console.log(1 === 1)
console.log(1 == "1")

Часто задаваемые вопросы

Урок «Нестрогое и строгое равенство» бесплатный?

Да — полный текст урока «Нестрогое и строгое равенство» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс JavaScript Academy, подпишись на CoddyKit PRO. Курс JavaScript Academy содержит 4 уроков всего.

Чему я научусь в уроке «Нестрогое и строгое равенство»?

Разберитесь в сравнении с помощью == и ===. Ты практикуешь JavaScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать JavaScript Academy?

Предыдущий опыт не требуется. JavaScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Нестрогое и строгое равенство»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке JavaScript Academy?

Да. Каждый урок JavaScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Истинные и ложные значения
  2. Нестрогое и строгое равенство
  3. Неявное приведение типов в операциях
  4. Приёмы явного преобразования
← Назад к JavaScript Academy