Переклад не закінчено. Будь ласка, допоможіть перекласти цю статтю з англійської.

Функція 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 Latest Draft (ECMA-262)
The definition of 'Math.sign' in that specification.
Draft  

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

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support38 Yes25 No259
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support Yes Yes Yes25 Yes Yes Yes

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

Мітки документа й учасники

Зробили внесок у цю сторінку: AdriandeCita
Востаннє оновлена: AdriandeCita,