Народ, всем привет. Сегодня мы обсудим два важных типа данных – NULL и undefined, и все различия между ними. Данный тип переменных есть во многих языках, мы поговорим на основе одного из самых популярных во фронте – JS, но в большинстве случаев это распространимо и на другие языки. Кто-то специально использует их в своем коде, у кого-то это получается «случайно» и, выводя на экран результат, он получает такой тип. Ну а кто-то даже не подозревал об их существовании. Так что давайте окунёмся немного в мир нулей и «ничего».
NULL
Данный тип обычно в языках представлен либо как 0, то есть конкретно ноль, либо в некоторых языках просто ничего, на подобии отсутствия данных, но более правильное значение, которое представлено в JS, это именно «пусто» или «значение не задано». Это важно понимать, так как при присвоении этого типа переменной мы объявляем, что в данный момент в переменной ничего нет. Обычно это прерогатива не строго типизированных языков, когда мы вначале можем не определять тип переменной и не заводить ей конкретного значения.
В некоторых других случаях NULL, как я уже сказал выше, может быть либо нулем, либо быть ссылкой на несуществующий объект, неким «нулевым указателем» и прочее. Но в случае того же JS это именно «пусто», когда в переменной ничего нет, но когда-то может быть. В ней нет ни ссылки, ни нуля, что задало бы ей внутри программы логика языка, числовой тип или тип объекта. Нет, это отдельный специальный тип, некая «прокладка», ка я ее называю, которая просто задает в переменной «ничего» и мы будем использовать ее после.
let age = null;
Undefined
Тип undefined по своей логике как бы тоже самое, и оно означает, что значение переменной не было присвоено. И мы даже можем специально назначить (в JS) этот тип для переменной. Но так делать не рекомендуется. И отличие его от null именно в том, что он становиться по умолчанию. И если переменная не была объявлена или ей что-то присвоено, то вы увидите на экране отладки именно undefined, и вам сразу станет понятно, что у вас где-то ошибка или невесть откуда взявшиеся данные.
В случае, если нам специально нужно объявить парочку переменных с пустым значением, то тут как раз используется null. Простыми словами, в JS есть официальный тип для присвоения пустых переменных. Для отлова ошибок есть undefined.
Кстати, в некоторых языках, тех же языках баз данных и т.д., эту роль выполняет только null. В других ест только undefined. JS же нам дает полный спектр услуг, так сказать.
let age;
alert(age); // выведет "undefined"