Я обнаружил это во время работы над календарем, которому необходимо отключить определенные диапазоны дат. Иногда это не так.
Воспроизвести:
moment().isBefore(moment())
false
, но иногда показывает true
. Похоже, что этого не происходит с методом isAfter
. Ниже скриншот.Похоже, что isBefore ведет себя правильно, но каким-то образом два объекта moment () иногда создаются со вторым, имеющим более раннюю дату. Это проверка, которая возвращает несопоставимые результаты:
https://github.com/moment/moment/blob/develop/src/lib/moment/compare.js#L26
Понятно, спасибо, что изучили это и связались со мной!
Я думаю, это зависит от того, в какую миллисекунду создаются моменты. Тот факт, что второй создается после первого, кажется ошибкой браузера.
Здесь есть более обширный разговор по этой теме: https://github.com/moment/moment/issues/2697
Тот факт, что второй создается после первого, кажется ошибкой браузера.
Мне кажется, это нормально.
Сравните moment().isBefore(moment())
с:
somethingThrowingAnError().method(somethingWithSideEffects())
Или даже:
somethingReturningNull().method(somethingWithSideEffects())
Вы не ожидаете или не хотите, чтобы somethingWithSideEffects()
вызывался при возникновении ошибки / метод не может быть вызван.
Все, что нужно сказать: first
_должен быть вызван перед second
:
first().method(second())
@ispacowanguitar иногда моменты создаются за одну и ту же миллисекунду, иногда нет. Здесь ничего нет.