--- title: Math.sign() slug: Web/JavaScript/Reference/Global_Objects/Math/sign translation_of: Web/JavaScript/Reference/Global_Objects/Math/sign ---
A função Math.sign() retorna o sinal de um número, indicando se o número é positivo, negativo ou zero.
Math.sign(x)
xUm número representando o sinal do argumento fornecido.
Se o argumento é um número positivo, o retorno será 1;
Se o numero passado for negativo, o retorno será -1
Se o argumento for um zero positivo , o retorno será +0
Se o argumento for 0 negativo , o retorno será -0
. Qualquer outro valor que não seja numérico (string transformada em numero por ex.), o retorno será {{jsxref("NaN")}}
Pela razão de sign() ser um método estático de Math, você sempre deve usá-lo como Math.sign(), e não como um método do objeto Math que você criou (Math não é um construtor).
Esta função possui 5 tipos de valores retornados, 1, -1, 0, -0, NaN, que representam "número positivo", "número negativo", "zero positivo", "zero negativo" e {{jsxref("NaN")}}, respectivamente.
O argumento passado para esta função será implicitamente convertido para o tipo numérico.
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) {
// Se x é NaN, o resultado é NaN.
// Se x é -0, o resultado é -0.
// Se x é +0, o resultado é +0.
// Se x é negativo e não -0, o resultado é -1.
// Se x é positivo e não +0, o resultado é +1.
return ((x > 0) - (x < 0)) || +x;
// Uma representação mais estética é mostrada abaixo
//
// ( (x > 0) ? 1 : 0 ) // se x é positivo então mais um
// + // senão (porque não poder ser - e +)
// ( (x < 0) ? -1 : 0 ) // se x é negativo então menos um
// || // se x é 0, -0, NaN, ou não é um número,
// +x // Então o resultado será x, (ou) se x não é
// // um número, então converte x para número
};
}
No polyfill acima, nenhuma coerção de tipo extra é necessária para tornar numéricos as expressões (x > 0) ou (x < 0) , porque subtraindo-as um do outro força uma conversão de tipo de booleano para numérico.
| Especificação | Status | Comentário |
|---|---|---|
| {{SpecName('ES6', '#sec-math.sign', 'Math.sign')}} | {{Spec2('ES6')}} | Definição inicial. |
| {{SpecName('ESDraft', '#sec-math.sign', 'Math.sign')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.builtins.Math.sign")}}