Math.sign()

Функція Math.sign() повертає знак числа, визначаючи, чи являється число додатнім, від'ємним, або нулем.

Синтаксис

Math.sign(x)

Аргументи

x
Число.

Результат

Число, що відображає знак аргументу. Якщо аргумент являється додатнім числом, від'ємним числом, додатнім чи від'ємним нулем, функція поверне відповідно 1, -1, 0 чи -0. В інших випадках результатом буде NaN.

Опис

У зв'язку з тим, що sign() - це статичний метод Math, слід завжди викликати його як Math.sign(), аніж як метод створеного вами об'єкту Math (оскільки Math не являється конструктором).

Ця функція має 5 різних видів результатів: 1, -1, 0, -0, NaN. Вони відповідно відображають "додатнє число", "від'ємне число", "додатній нуль", "від'ємний нуль" та NaN.

Аргумент буде неявно перетворено у number при передачі у функцію.

Приклади

Застосування Math.sign()

Math.sign(3);     //  1
Math.sign(-3);    // -1
Math.sign('-3');  // -1
Math.sign(0);     //  0
Math.sign(-0);    // -0
Math.sign(NaN);   // NaN
Math.sign('foo'); // NaN
Math.sign();      // NaN

Поліфіл

if (!Math.sign) {
  Math.sign = function(x) {
    // Якщо x - NaN, результатом буде NaN.
    // Якщо x - -0, результатом буде -0.
    // Якщо x - +0, результатом буде +0.
    // Якщо x від'ємний, але не -0, результатом буде -1.
    // Якщо x додатній, але не +0, результатом буде +1.
    return ((x > 0) - (x < 0)) || +x;
    // Більш наочне уявлення представлено нижче
    //
    // ( (x > 0) ? 0 : 1 )  // якщо від'ємний x - то від'ємна 1
    //          +           // інакще (бо не може бути одночасно - та +)
    // ( (x < 0) ? 0 : -1 ) // якщо додатній x - то додатня 1
    //         ||           // якщо x є 0, -0, чи NaN, чи не являється числом,
    //         +x           // то результатом буде x, (чи) якщо x не є
    //                      // числом, то x приводиться до чисельного типу
  };
}

У наведеному вище поліфілі не потрібно ніяких додаткових приведень типів (x > 0) чи (x < 0), бо їх віднімання одного від іншого вже вимагає конвертації із булевого типу в числа.

Специфікації

Специфікація Статус Примітка
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Math.sign' in that specification.
Standard Первинне визначення.
ECMAScript (ECMA-262)
The definition of 'Math.sign' in that specification.
Living Standard  

Сумісність із браузерами

BCD tables only load in the browser

Дивіться також