Найти в Дзене

JavaScript: когда баги сходу в самом языке

Программисты часто пишут программы с багами, особенно если программа большая. Но JavaScript — тот случай, когда баг официально присутствует в самом языке и в простой операции Есть в JavaScript простая операция typeof. Она может проверить любые данные на то, какого они типа. typeof 2 напишет, что мы имеем дело с числом, typeoff "привет" сообщит, что это строка(так текстовые данные в программировании называются). НО! Если мы напишем typeoff null, то неожиданно получим заявление, что этот самый null это самый настоящий объект. А объект — это в JavaScript набор данных. Когда мы берём числа, строки, другие данные и собираем их в единую сущность. Так вот, null никакой не объект, мало того, он абсолютно не ведёт себя как объект. null это отдельное значение отдельного специального типа данных, которое обозначает пустоту. Например, пишете вы на JavaScript код, который должен найти на страничке сайта кнопку с текстом «укантропопить». Запускаете код, движок JavaScript ищет кнопку — и не находит,
Оглавление

Программисты часто пишут программы с багами, особенно если программа большая. Но JavaScript — тот случай, когда баг официально присутствует в самом языке и в простой операции

Такая вот операция

Есть в JavaScript простая операция typeof. Она может проверить любые данные на то, какого они типа. typeof 2 напишет, что мы имеем дело с числом, typeoff "привет" сообщит, что это строка(так текстовые данные в программировании называются).

НО! Если мы напишем typeoff null, то неожиданно получим заявление, что этот самый null это самый настоящий объект. А объект — это в JavaScript набор данных. Когда мы берём числа, строки, другие данные и собираем их в единую сущность.

Так вот, null никакой не объект, мало того, он абсолютно не ведёт себя как объект. null это отдельное значение отдельного специального типа данных, которое обозначает пустоту. Например, пишете вы на JavaScript код, который должен найти на страничке сайта кнопку с текстом «укантропопить». Запускаете код, движок JavaScript ищет кнопку — и не находит, нет её. Тогда он вместо информации о кнопке выдаст вам этот самый null

Почему так?

Потому что первая версия JavaScript была создана за 10 дней, и Брэндан Эйх допустил эту ошибку именно тогда. Нашли её через несколько лет — JavaScript вышел в 1995, а активно обсуждать ситуацию начали уже на рубеже девяностых-нулевых. Правда, официально ошибку признали только в 2009 году.

Но язык уже стал популярным, кода на первой версии JS было написано много — поэтому решили оставить. Просто добавили другие операции для проверки типа данных, в которых таких багов нет.

Используйте, например, isNull(), isObject(), и будет вам счастье.

Вот такой вот JavaScript язык, с рядом исторических проблем, которые постепенно исправляют, исправляют, доводят язык до ума. Важно знать о них и не допускать ошибок уже в своём коде.