Почему Math.max() меньше, чем Math.min() в JavaScript | Доктор Дерек Остин Вот почему максимальная функция JavaScript меньше, чем его минимальная функция, когда аргументы не передаются.
Photo by Brett Jordan on Unsplash Знаете ли вы, что Math.max()
без аргументов возвращает значение меньше, чем Math.min()
без аргументов в JavaScript?
Почему? Проверим, что возвращают функции:
Это странно — Бесконечность
на самом деле является самым большим числом в JavaScript, наряду со значениями Number.MAX_VALUE
и Number.MAX_SAFE_INTEGER
.
Что возвращает Math.min()
без аргументов?
Опять же, мы имеем противоположное ожидаемому: -Infinity
— это наименьшее число в JavaScript, наряду с Number.MIN_VALUE
.
Так почему же Math.min()
и Math.max()
, кажется, задом наперёд?
Ответ скрыт в документах MDN:
«
-Infinity
является начальным компарантом, потому что почти каждое другое значение больше, поэтому, когда аргументы не указаны, —Infinity
возвращается.Если хотя бы один из аргументов не может быть преобразован в число, результатом будет
NaN
». — Документы MDN дляMath.max()
Конечно! Math.max()
— это просто реализация для
цикла по параметрам (ознакомьтесь с фактической реализацией Chrome V8).
Итак, Math.max()
начинается со значения поиска -Infinity
, потому что любое другое число будет больше -Infinity.
Аналогично, Math.min()
начинается со значения поиска Infinity
:
«Если аргументы не указаны, результатом будет
Infinity
.Если хотя бы один из аргументов не может быть преобразован в число, результат равен
NaN
». — MDN Docs дляMath.min()
Спецификация ECMAScript для Math.max()
и Math.min()
также указывает, что +0
считается большим, чем -0
с помощью следующих функций:
Это поведение отличается от >
больше чем и <
меньше чем операторы, которые считают -0
отрицательный нуль равным +0
положительный нуль.
Техническая, -0
отрицательный нуль равен 0
положительный нуль в соответствии с операторами равенства ==
и ===
, но не в соответствии с Object.is()
.
Итак, в некотором смысле, Math.max()
и Math.min()
более умны для -0
отрицательных нулей, чем наивная реализация (см. строки 96–99 в коде V8).
Понравилась статья? Тогда вам понравится моя статья о самом быстром способе найти минимум и максимум в массиве JavaScript, где я показываю метод использования Math.max()
и Math.min()
, что намного быстрее, чем использование оператора расширения ...
:
Самый быстрый способ найти минимальное и максимальное значения в массиве в JavaScript
JavaScript предлагает несколько способов нахождения наименьшего и наибольшего чисел в списке, включая встроенный математический…
medium.com
Теперь вы знаете все особенности Math. max()
и Math.min()
!
Приятного программирования! 😊💻😉🔥🙃
Photo by DaYsO on UnsplashДоктор Дерек Остин — автор книги «Программирование карьеры: как стать успешным шестизначным программистом за 6 месяцев» , которая теперь доступна на Amazon.
Встроенный JavaScript: Математика: мин | Могу ли я использовать... Таблицы поддержки для HTML5, CSS3 и т. д.
Могу ли я использовать
Поиск?
Встроенный JavaScript: Математика: мин.
Глобальное использование
96,92% + 0% "=" 96,92%
IE
- 6 - 10: Supported
- 11: Supported
Edge
- 12 - 109: Supported
- 110: Supported
Firefox
- 15% - Supported"> 2 - 109: Supported
- 110: Supported
- 111–112: поддерживается
Chrome
- 4–109: поддерживается
- 110: поддерживается
- 111–113: поддерживается
Safari
- 3.1 - 16.2: Supported
- 16.3: Supported
- 16.4 - TP: Supported
Opera
- 10 - 94: Supported
- 95: Supported
Safari on iOS
- 3.2 - 16.2: Supported
- 16. 3: Supported
- 16.4: Supported
Opera Mini
- all: Support unknown
Android Browser
- 2.1 - 4.3: Not supported
- 4.4 - 4.4.4: Supported
- 109: Supported
Opera Mobile
- 12 - 12.1: Supported
- 73: Supported
Chrome for Android
- 110: Supported
Firefox for Android
- 110: поддерживается
UC Browser для Android
- 13.4: поддержка неизвестна