--- title: Math.sign() slug: Web/JavaScript/Reference/Global_Objects/Math/sign tags: - JavaScript - Math - Method - Reference translation_of: Web/JavaScript/Reference/Global_Objects/Math/sign ---
Функція Math.sign() повертає знак числа, визначаючи, чи являється число додатнім, від'ємним, або нулем.
Джерело цих інтерактивних прикладів зберігається у репозиторії на GitHub. Якщо ви маєте бажання зробити свій внесок у проект інтерактивних прикладів - будь ласка, зклонуйте репозиторій https://github.com/mdn/interactive-examples та пришліть нам pull request.
Math.sign(x)
xЧисло, що відображає знак аргументу. Якщо аргумент являється додатнім числом, від'ємним числом, додатнім чи від'ємним нулем, функція поверне відповідно 1, -1, 0 чи -0. В інших випадках результатом буде {{jsxref("NaN")}}.
У зв'язку з тим, що sign() - це статичний метод Math, слід завжди викликати його як Math.sign(), аніж як метод створеного вами об'єкту Math (оскільки Math не являється конструктором).
Ця функція має 5 різних видів результатів: 1, -1, 0, -0, NaN. Вони відповідно відображають "додатнє число", "від'ємне число", "додатній нуль", "від'ємний нуль" та {{jsxref("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), бо їх віднімання одного від іншого вже вимагає конвертації із булевого типу в числа.
| Специфікація | Статус | Примітка |
|---|---|---|
| {{SpecName('ES6', '#sec-math.sign', 'Math.sign')}} | {{Spec2('ES6')}} | Первинне визначення. |
| {{SpecName('ESDraft', '#sec-math.sign', 'Math.sign')}} | {{Spec2('ESDraft')}} |
Таблиця сумісності на цій сторінці сформована автоматично із структурованих даних. Якщо ви маєте бажання зробити свій внесок до цих даних - будь-ласка, ось репозиторій https://github.com/mdn/browser-compat-data, надішліть нам свій pull request.
{{Compat("javascript.builtins.Math.sign")}}