--- 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")}}