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()

js
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

js
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

Compatibilidade com navegadores

Veja também