Функція Math.sign()
повертає знак числа, визначаючи, чи являється число додатнім, від'ємним, або нулем.
Джерело цих інтерактивних прикладів зберігається у репозиторії на GitHub. Якщо ви маєте бажання зробити свій внесок у проект інтерактивних прикладів - будь ласка, зклонуйте репозиторій https://github.com/mdn/interactive-examples та пришліть нам pull request.
Синтаксис
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
Таблиця сумісності на цій сторінці сформована автоматично із структурованих даних. Якщо ви маєте бажання зробити свій внесок до цих даних - будь-ласка, ось репозиторій https://github.com/mdn/browser-compat-data, надішліть нам свій pull request.