А приводит какие-то аргументы или просто «горит»? Помню был proposal на этот счёт. И в V8 даже имплементировали, но потом отключили, как раз из-за поломки. Живую ссылку вряд ли быстро найду, но в WebArchive в обсуждении Harmony есть. Вижу, что и Брендон выступает за «починку» - web.archive.org/web/20130120031230/wiki.ecmascript.org/doku.php?id=harmony:typeof_null
@@antonov_i аргументы - спека, там прописано если typeof null то верни строку object. null не ошибка, архитектуру готовили под java, с java несложилось, архитектура осталась. Null говорит об отсутствии структуры данных. WebApi при поиске елемента в dom возвращает object, но если елемента нет, то мы получим null и тут null нам не говорит, что елемент был или будет, мы могли доспустить ошибку в названии селектора, например.
@@ДмитрийГусаров-к5о Не вижу противоречий со своим высказыванием. Спека фиксирует текущее поведение и правила. Это не отменяет историю с багом, который так и останется в истории языка. Его не будут править, поэтому странно ожидать, что спека будет говорить про другое. Ведь на неё опираются в первую очередь разработчики движков. Если когда-нибудь захотят исправить это поведение (вряд ли), то изменения войдут в новую спеку. В блоге Алекса Раушмайнера в старой публикации есть хорошее обсуждение и фрагменты кода с имплентацией: 2ality.com/2013/10/typeof-null.html. И да, тут тоже засветился автор JS.
@@antonov_i вроде тотже чел, который написал что null - ошибка, вскоре написал, что его слова неврно понимают и говорил, что изначально в браузер планировали java, заложили архитектуру, js был песочницей, с java несложилось, стали развивать дальше js на тойже архитектуре. null достался от java. вроде так
ёпта с самого начала, очередной бред, про JS и его странности. Читайте спецификацию ES, там чёрным по-белому написано: null value - primitive value that represents the intentional absence of any object value. Никаких примитивных типов данных в JS не существуют, null и underfined можно назвать такими, но и то условно, это типы состоящие ровно из одного значения null и underfined. null - это объект не определенной структуры, а undefined это когда переменной не присвоено никакое значение. Вы разницу ведь улавливает "объект" и "никакой значение"?
Звучит чересчур категорично. Как быть, например, с JSON? null - валидное значение для JSON, а undefined будет утерян при сериализации. Как быть с внешними зависимостями, которые применяют null?
большое спасибо
Благодарю
> null это ошибка, которая признана
Спрячьте это видео от Мурыча, он сильно горит на этот миф и когда его расказывают новичкам
А приводит какие-то аргументы или просто «горит»? Помню был proposal на этот счёт. И в V8 даже имплементировали, но потом отключили, как раз из-за поломки. Живую ссылку вряд ли быстро найду, но в WebArchive в обсуждении Harmony есть. Вижу, что и Брендон выступает за «починку» - web.archive.org/web/20130120031230/wiki.ecmascript.org/doku.php?id=harmony:typeof_null
@@antonov_i аргументы - спека, там прописано если typeof null то верни строку object. null не ошибка, архитектуру готовили под java, с java несложилось, архитектура осталась. Null говорит об отсутствии структуры данных. WebApi при поиске елемента в dom возвращает object, но если елемента нет, то мы получим null и тут null нам не говорит, что елемент был или будет, мы могли доспустить ошибку в названии селектора, например.
@@ДмитрийГусаров-к5о Не вижу противоречий со своим высказыванием. Спека фиксирует текущее поведение и правила. Это не отменяет историю с багом, который так и останется в истории языка. Его не будут править, поэтому странно ожидать, что спека будет говорить про другое. Ведь на неё опираются в первую очередь разработчики движков. Если когда-нибудь захотят исправить это поведение (вряд ли), то изменения войдут в новую спеку.
В блоге Алекса Раушмайнера в старой публикации есть хорошее обсуждение и фрагменты кода с имплентацией: 2ality.com/2013/10/typeof-null.html. И да, тут тоже засветился автор JS.
@@ДмитрийГусаров-к5о А что ты подразумеваешь под фразой «архитектуру готовили под Java»?
@@antonov_i вроде тотже чел, который написал что null - ошибка, вскоре написал, что его слова неврно понимают и говорил, что изначально в браузер планировали java, заложили архитектуру, js был песочницей, с java несложилось, стали развивать дальше js на тойже архитектуре. null достался от java. вроде так
ёпта с самого начала, очередной бред, про JS и его странности. Читайте спецификацию ES, там чёрным по-белому написано:
null value - primitive value that represents the intentional absence of any object value.
Никаких примитивных типов данных в JS не существуют, null и underfined можно назвать такими, но и то условно, это типы состоящие ровно из одного значения null и underfined.
null - это объект не определенной структуры, а undefined это когда переменной не присвоено никакое значение.
Вы разницу ведь улавливает "объект" и "никакой значение"?
Выше в комментах как будто объяснил свою позицию. Повторяться нет смысла. Задам встречный вопрос, а что для вас примитивный тип данных?
в Typescript & javascript использую только undefined.
не вижу ни одной причины использовать null.
Звучит чересчур категорично. Как быть, например, с JSON? null - валидное значение для JSON, а undefined будет утерян при сериализации. Как быть с внешними зависимостями, которые применяют null?