null и undefined / Как проверить значение на null (для новичков)

Сегодня видео для новичков. Поговорим про null, undefined и разберём простой вопрос. Он действительно простой, но оказывается, даже далеко не начинающие разработчики забывают про эту особенность языка и совершают ошибки. Хуже всего, когда это происходит на собеседованиях.
Что такое Null? В соответствии со спецификацией ECMAScript, Null - это примитивный тип данных. Этому типу соответствует лишь одно значение - null. Его используют, когда требуется явно обозначить отсутствие какого либо значения.
null часто используют, когда требуется показать, что отсутствует именно объектное значение. Но это правило жёстко нигде не описано. И разработчики используют этот подход по аналогии с другими языками программирования.
В общем, сегодня обсудим null и undefined в JavaScript.
Полезные ссылки:
* Почему typeof null === 'object'? (habr.com/ru/articles/200664/)
Содержание:
00:00 Интро
01:05 Что такое Null?
01:49 null в коде
02:34 Когда применяют null?
03:17 null и undefined
05:01 Как проверить значение на null?
07:01 Баг в JavaScript
08:48 Несколько способов проверить значение на null
11:27 Функция isNull существует?
12:24 Пишем функцию isNull
14:07 Резюме. Краткая выжимка

Пікірлер: 17

  • @lesson-web
    @lesson-web2 күн бұрын

    большое спасибо

  • @AndreyAndrey-nx6uj
    @AndreyAndrey-nx6uj4 күн бұрын

    Благодарю

  • @baileysli6235
    @baileysli62355 күн бұрын

    > null это ошибка, которая признана Спрячьте это видео от Мурыча, он сильно горит на этот миф и когда его расказывают новичкам

  • @antonovjs

    @antonovjs

    5 күн бұрын

    А приводит какие-то аргументы или просто «горит»? Помню был proposal на этот счёт. И в V8 даже имплементировали, но потом отключили, как раз из-за поломки. Живую ссылку вряд ли быстро найду, но в WebArchive в обсуждении Harmony есть. Вижу, что и Брендон выступает за «починку» - web.archive.org/web/20130120031230/wiki.ecmascript.org/doku.php?id=harmony:typeof_null

  • @user-tn8vr5du5m

    @user-tn8vr5du5m

    5 күн бұрын

    @@antonovjs аргументы - спека, там прописано если typeof null то верни строку object. null не ошибка, архитектуру готовили под java, с java несложилось, архитектура осталась. Null говорит об отсутствии структуры данных. WebApi при поиске елемента в dom возвращает object, но если елемента нет, то мы получим null и тут null нам не говорит, что елемент был или будет, мы могли доспустить ошибку в названии селектора, например.

  • @antonovjs

    @antonovjs

    5 күн бұрын

    ​@@user-tn8vr5du5m Не вижу противоречий со своим высказыванием. Спека фиксирует текущее поведение и правила. Это не отменяет историю с багом, который так и останется в истории языка. Его не будут править, поэтому странно ожидать, что спека будет говорить про другое. Ведь на неё опираются в первую очередь разработчики движков. Если когда-нибудь захотят исправить это поведение (вряд ли), то изменения войдут в новую спеку. В блоге Алекса Раушмайнера в старой публикации есть хорошее обсуждение и фрагменты кода с имплентацией: 2ality.com/2013/10/typeof-null.html. И да, тут тоже засветился автор JS.

  • @antonovjs

    @antonovjs

    5 күн бұрын

    @@user-tn8vr5du5m А что ты подразумеваешь под фразой «архитектуру готовили под Java»?

  • @user-tn8vr5du5m

    @user-tn8vr5du5m

    5 күн бұрын

    @@antonovjs вроде тотже чел, который написал что null - ошибка, вскоре написал, что его слова неврно понимают и говорил, что изначально в браузер планировали java, заложили архитектуру, js был песочницей, с java несложилось, стали развивать дальше js на тойже архитектуре. null достался от java. вроде так

  • @cheblin
    @cheblin5 күн бұрын

    в Typescript & javascript использую только undefined. не вижу ни одной причины использовать null.

  • @antonovjs

    @antonovjs

    5 күн бұрын

    Звучит чересчур категорично. Как быть, например, с JSON? null - валидное значение для JSON, а undefined будет утерян при сериализации. Как быть с внешними зависимостями, которые применяют null?

  • @MrAirrussia
    @MrAirrussia4 күн бұрын

    ёпта с самого начала, очередной бред, про JS и его странности. Читайте спецификацию ES, там чёрным по-белому написано: null value - primitive value that represents the intentional absence of any object value. Никаких примитивных типов данных в JS не существуют, null и underfined можно назвать такими, но и то условно, это типы состоящие ровно из одного значения null и underfined. null - это объект не определенной структуры, а undefined это когда переменной не присвоено никакое значение. Вы разницу ведь улавливает "объект" и "никакой значение"?

  • @antonovjs

    @antonovjs

    3 күн бұрын

    Выше в комментах как будто объяснил свою позицию. Повторяться нет смысла. Задам встречный вопрос, а что для вас примитивный тип данных?

Келесі