В 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
?
object
primitive
undefined
string