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® 2025 Language Specification
# sec-math.sign

Compatibilidade com navegadores

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
sign

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Veja também