Math.sign()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
A função Math.sign()
retorna o sinal de um número, indicando se o número é positivo, negativo ou zero.
Sintaxe
Math.sign(x)
Parâmetros
x
Se o parametro passado ao for numerico, a função irá converter o parametro em Um número.
Valor retornado
Um 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á NaN
Descrição
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 NaN
, respectivamente.
O argumento passado para esta função será implicitamente convertido para o tipo numérico
.
Exemplos
Usando 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
Polyfill
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ções
Specification |
---|
ECMAScript® 2026 Language Specification # sec-math.sign |