La fonction Math.sign() renvoie le signe d'un nombre et permet de savoir si un nombre est positif, négatif ou nul.

Syntaxe

Math.sign(x)

Paramètres

x
Un nombre.

Valeur de retour

Un nombre qui représente le signe de l'argument. Si l'argument est un nombre positif, négatif, un zéro positif ou un zéro négatif, la fonction renverra respectivement 1, -1, 0, -0. Sinon, ce sera NaN qui sera renvoyé.

Description

sign() étant une méthode statique de Math, il faut utiliser Math.sign() et non pas la méthode d'un autre objet qui aurait été créé (Math n'est pas un constructeur).

Cette fonction peut renvoyer 5 valeurs : 1, -1, 0, -0, NaN, qui indiquent respectivement que x est un nombre positif, un nombre négatif, zéro, la limite négative de zéro, et n'est pas un nombre pour NaN.

L'argument passé à cette fonction sera implicitement converti au type number.

Exemple

Utiliser 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

Prothèse d'émulation (polyfill)

if (!Math.sign) {
  Math.sign = function(x) {
    // Si x vaut NaN, le résultat vaudra NaN.
    // Si x vaut -0, le résultat vaudra -0.
    // Si x vaut +0, le résultat vaudra +0.
    // Si x est négatif et différent de -0, le résultat vaudra -1.
    // Si x est positif et différent de +0, le résultat vaudra +1.
    x = +x; // on convertit la valeur en un nombre
    if (x === 0 || isNaN(x)) {
      return Number(x);
    }
    return x > 0 ? 1 : -1;
  };
}

Spécifications

Spécification État Commentaires
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'Math.sign' dans cette spécification.
Standard Définition initiale.
ECMAScript Latest Draft (ECMA-262)
La définition de 'Math.sign' dans cette spécification.
Standard évolutif  

Compatibilité des navigateurs

FonctionnalitéChromeEdgeFirefoxInternet ExplorerOperaSafari
Support simple38 Oui25 Non259
FonctionnalitéAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Support simple Oui Oui Oui25 Non Oui Oui

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : SphinxKnight
 Dernière mise à jour par : SphinxKnight,