[JavaScript] Syntaxe bizarre

Fermé
mbu725 Messages postés 21 Date d'inscription vendredi 3 juillet 2009 Statut Membre Dernière intervention 3 août 2013 - 7 juil. 2012 à 17:05
aladin07 Messages postés 277 Date d'inscription vendredi 13 avril 2012 Statut Membre Dernière intervention 30 septembre 2012 - 7 juil. 2012 à 19:04
Bonjour,

Dans un script que j'ai trouvé sur le net, on retrouve ceci :
args = [+new Date];
Mais de quoi peut-il bien s'agir ? Je n'ai jamais vu une telle syntaxe auparavant, j'ignorais que ça existait. Serait-ce un équivalent de ceci ?
args = [new Date()];
Je crois que les crochets signifie que c'est un élément d'un array, mais que signifie le + ?

Merci.

P.S. Voici le script complet, c'est un générateur de nombres pseudo-aléatoires :
function Alea() {
  return (function(args) {
    // Johannes Baagøe <baagoe@baagoe.com>, 2010
    var s0 = 0;
    var s1 = 0;
    var s2 = 0;
    var c = 1;

    if (args.length == 0) {
      args = [+new Date];
    }
    var mash = Mash();
    s0 = mash(' ');
    s1 = mash(' ');
    s2 = mash(' ');

    for (var i = 0; i < args.length; i++) {
      s0 -= mash(args[i]);
      if (s0 < 0) {
        s0 += 1;
      }
      s1 -= mash(args[i]);
      if (s1 < 0) {
        s1 += 1;
      }
      s2 -= mash(args[i]);
      if (s2 < 0) {
        s2 += 1;
      }
    }
    mash = null;

    var random = function() {
      var t = 2091639 * s0 + c * 2.3283064365386963e-10; // 2^-32
      s0 = s1;
      s1 = s2;
      return s2 = t - (c = t | 0);
    };
    random.uint32 = function() {
      return random() * 0x100000000; // 2^32
    };
    random.fract53 = function() {
      return random() + 
        (random() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53
    };
    random.version = 'Alea 0.9';
    random.args = args;
    return random;

  } (Array.prototype.slice.call(arguments)));
};

1 réponse

aladin07 Messages postés 277 Date d'inscription vendredi 13 avril 2012 Statut Membre Dernière intervention 30 septembre 2012 30
7 juil. 2012 à 19:04
+new Date veut tout simplement dire Number(new Date), cela retourne le nombre de millisecondes depuis 1 jan 1970
0