MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

Esta tradução está incompleta. Por favor, ajude a traduzir este artigo.

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
Um número.

Valor retornado

Um número representando o sinal do argumento fornecido. Se o argumento é um número positivo, número negativo, zero positivo ou zero negativo, a função retornará 1, -1, 0 ou -0, respectivamente. De outra forma, NaN é retornado.

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

Especificação Status Comentário
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Math.sign' in that specification.
Padrão Definição inicial.
ECMAScript Latest Draft (ECMA-262)
The definition of 'Math.sign' in that specification.
Padrão em tempo real  

Compatibilidade com navegadores

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic Support38(Yes)25No259
FeatureAndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Basic Support(Yes)(Yes)(Yes)25No(Yes)(Yes)

Veja também

Etiquetas do documento e colaboradores

 Colaboradores desta página: josetepedino
 Última atualização por: josetepedino,