Math.abs() возвращает модуль числа.
Это значит:
- положительное число остаётся как есть
- отрицательное становится положительным
0остаётся0
Синтаксис
Math.abs(x)
x - число, для которого нужно получить модуль.
Что делает Math.abs()
Метод возвращает расстояние числа от нуля без учёта знака.
console.log(Math.abs(5)); // 5
console.log(Math.abs(-5)); // 5
console.log(Math.abs(0)); // 0
То есть Math.abs() просто убирает знак минус, если он есть.
Что возвращает Math.abs()
Math.abs() возвращает число типа number.
const result = Math.abs(-12.7);
console.log(result); // 12.7
console.log(typeof result); // "number"
Это именно число, а не строка.
Положительные и отрицательные числа
Если число уже положительное, ничего не меняется.
console.log(Math.abs(8)); // 8
Если число отрицательное, минус убирается.
console.log(Math.abs(-8)); // 8
Дробные числа
Метод работает не только с целыми, но и с дробными значениями.
console.log(Math.abs(-4.7)); // 4.7
console.log(Math.abs(4.7)); // 4.7
Нюанс с -0
Если передать -0, результатом будет обычный 0.
console.log(Math.abs(-0)); // 0
Технически это уже не -0, а обычный 0.
Проверить можно так:
console.log(Object.is(Math.abs(-0), 0)); // true
Неявное приведение типов
Math.abs() сначала пытается привести аргумент к числу.
console.log(Math.abs("5")); // 5
console.log(Math.abs("-5")); // 5
console.log(Math.abs(null)); // 0
console.log(Math.abs(true)); // 1
Из-за этого результат иногда может быть неожиданным, если передавать не числа.
Поэтому на практике обычно лучше передавать в метод уже готовое числовое значение.
NaN и Infinity
Для специальных значений метод ведёт себя предсказуемо.
console.log(Math.abs(NaN)); // NaN
console.log(Math.abs(Infinity)); // Infinity
console.log(Math.abs(-Infinity)); // Infinity
Число не меняется
Math.abs() не изменяет исходное значение. Он только возвращает новый результат.
const value = -15;
const absolute = Math.abs(value);
console.log(value); // -15
console.log(absolute); // 15
Когда это полезно
Math.abs() удобно использовать, когда:
- нужно получить расстояние от нуля
- важна только величина числа, а не знак
- нужно посчитать разницу между двумя значениями
Пример:
const diff = Math.abs(a - b);
Это очень частый и удобный шаблон.
Math.abs() и Math.sign()
Эти методы решают разные задачи.
console.log(Math.abs(-7)); // 7
console.log(Math.sign(-7)); // -1
Math.abs()возвращает величину без знакаMath.sign()показывает сам знак числа
Math.abs() и округление
Math.abs() ничего не округляет.
console.log(Math.abs(-4.7)); // 4.7
Если нужно ещё и округление, его делают отдельно:
console.log(Math.round(Math.abs(-4.7))); // 5
Частые ошибки
Думать, что метод округляет число
console.log(Math.abs(-4.7)); // 4.7
Метод убирает знак, но не меняет дробную часть.
Забывать про неявное приведение типов
console.log(Math.abs(null)); // 0
console.log(Math.abs(true)); // 1
Это нормальное поведение JavaScript, но лучше не полагаться на него без необходимости.
Ожидать, что -Infinity останется отрицательным
console.log(Math.abs(-Infinity)); // Infinity
Метод убирает знак и у специальных значений тоже.
Быстрая памятка
Math.abs()возвращает модуль числа- метод возвращает
number - отрицательное число становится положительным
- дробная часть не меняется
-0превращается в0- метод сначала приводит аргумент к числу
Коротко
Math.abs() - это стандартный способ получить модуль числа в JavaScript. Главное, что стоит запомнить: метод не округляет число и не меняет его величину, а просто убирает знак минус, если он есть.