нулевой и неопределенный

В JavaScript есть несколько способов указать отсутствие значения. На этой странице описаны два наиболее распространенных способа: null и undefined типы данных.

Ключевое слово null представляет намеренно определенное отсутствие значения. null — это примитив, хотя оператор typeof возвращает, что null — это объект. Эта ошибка перешла из первой версии JavaScript и намеренно оставлена ​​без внимания, чтобы не нарушить ожидаемое поведение в сети.

typeof null
> object

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

undefined

undefined — это примитивное значение, присваиваемое только что объявленным переменным или результирующему значению операции, которая не возвращает значимого значения. Например, это может произойти, когда вы объявляете функцию в консоли разработчика браузера:

function myFunction() {}
> undefined

Функция явно возвращает undefined , если ее оператор return не возвращает значения.

(function() {
    return;
}());
> undefined

Сравнение null и undefined значений

Хотя undefined и null имеют некоторое функциональное перекрытие, у них разные цели. В самом строгом смысле null представляет собой значение, намеренно определенное как «пустое», а undefined — отсутствие какого-либо присвоенного значения.

null и undefined примерно равны, но не строго равны . Оператор свободного равенства приводит операнды разных типов к логическим значениям, делая null и undefined false . Оператор строгого равенства считает операнды разных типов данных неравными.

null == undefined
> true

null === undefined
> false

В отличие от зарезервированного ключевого слова null , undefined является свойством глобального объекта . Это было дизайнерское решение, принятое на ранних этапах разработки JavaScript, и оно позволяло устаревшим браузерам полностью перезаписывать undefined . В современных браузерах по-прежнему можно использовать undefined в качестве идентификатора в неглобальных областях, переопределяя его значение в области этого объявления. Никогда не используйте undefined в качестве идентификатора. Это может привести к неожиданному поведению и, скорее всего, запутает будущих специалистов по поддержке вашей кодовой базы.

Проверьте свое понимание

Что возвращает typeof null ?

object
primitive
undefined
string