В чём отличие null от undefined

`null` и `undefined` оба представляют значения, которые указывают на "отсутствие значения", но между ними есть ключевые отличия:

undefined

  • Переменная была объявлена, но не была инициализирована, то есть ей не было присвоено какое-либо значение. Это значение по умолчанию для переменных, объявленных с помощью `var`, `let` или `const`, а также для аргументов функций, которым не были переданы значения, и для возвращаемого значения функций, которые не возвращают явно какое-либо значение.
  • Также является типом данных. То есть `typeof undefined` вернёт `"undefined"`.

null

  • Используется для явного указания на отсутствие объекта или значения. Это сигнал для программиста о том, что переменная должна служить для хранения объекта, но в данный момент она "пуста" или не указывает на какой-либо объект.
  • В отличие от `undefined`, он является объектом. То есть `typeof null` вернёт `"object"`, что может быть немного запутывающим. Это известная особенность языка, сохраняемая для обратной совместимости.

Когда использовать

  • Используйте `undefined` для проверки, была ли переменная инициализирована или определена функция/параметр.
  • Используйте `null` в качестве намеренного отсутствия какого-либо объектного значения. Это полезно, например, при инициализации переменной, которая позже должна быть назначена объекту.

Сравнение

  • При нестрогом сравнении (`==`) `null` и `undefined` считаются равными, потому что оба представляют отсутствие значения. То есть `null == undefined` вернёт `true`.При строгом сравнении (`===`), которое учитывает тип данных
  • При строгом сравнении (`===`), которое учитывает тип данных, они считаются различными: `null === undefined` вернёт `false`.

В целом, `null` и `undefined` играют важную роль в представлении и обработке отсутствия данных, но их семантическое значение и использование различаются, что важно учитывать при разработке программ.

Feb. 22, 2024, easyoffer