В JavaScript есть несколько способов указать отсутствие значения. На этой странице описаны два наиболее распространенных способа: null и undefined типы данных.
null
Ключевое слово 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 ?
objectundefinedprimitivestring