Баланс nan что это значит

Полезный NaN

О NaN больше всего известно то, что он не равен самому себе.

И что операции, невозможные арифметически, вернут NaN.

Но у NaN есть одно мало известное(?), и, как мне кажется, весьма полезное применение.

TL;DR Все дело в Date

Чем полезно? Invalid Date все равно Date. И все операции с Date все ещё на месте.
Любые операции с Date, кроме прямой установки timestamp вернут NaN, оставив Date как Invalid Date.

При этом, проверка на валидность даты становится проще некуда

Заметьте, преобразование в timestamp здесь не требуется, valueOf() делает это под капотом.

Все операции с Date — мутабельные. Тем не менее, клонирование через конструктор прекрасно работает и с Invalid Date.

Сравнение двух дат напрямую в Date не реализовано и сравнивать даты можно только через timestamp. NaN гарантирует что Invalid Date точно не будет равно никакой другой дате. Думаю, это весьма полезное свойство.

К моему сожалению, конструктор Date ведёт себя несколько странно по отношению к входному параметру.

Было бы намного логичнее конструировать Invalid Date, ведь null — это не совсем ноль. Оставим это на совести Javascript-а.

Однако, если насильственно передать в конструктор undefined, то результат выглядит ожидаемым. Так что будьте осторожны.

Статья получилась больше о Date чем о NaN, но, в целом, именно об этой связке я хотел рассказать.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *