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

Функція 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  

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

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidiOS SafariSamsung InternetNode.js
Basic supportChrome Full support 38Edge Full support YesFirefox Full support 25IE No support NoOpera Full support 25Safari Full support 9WebView Android Full support YesChrome Android Full support YesEdge Mobile Full support YesFirefox Android Full support 25Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support 0.12

Legend

Full support  
Full support
No support  
No support

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

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

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