Événements Javascript: window.event vs argument reference (function)

Quelle est la différence entre:

function test (e) { console.log("Event: ", e); } document.querySelector("button").onclick = test; 
 <button>Click!</button> 

et:

Ils semblent renvoyer exactement le même objet, même contenant la même valeur timeStamp en millisecondes.

Je vois souvent le code en utilisant le premier exemple, en utilisant e ou evt , mais qu'est-ce qui ne va pas avec le deuxième exemple?

Je comprends que cet event est le même que window.event , qui est une variable globale, mais quel est l'objectif de l'utilisation de l' event e if fait-il la même chose?

Modes standard

Il existe deux façons standard d'ajouter des auditeurs d'événements: gestionnaires d'événements et addEventListener .

Manutentionnaire d'événements

Initialement DOM0 (non défini par aucune spécification, mais largement implémenté), ils sont correctement définis dans la spécification HTML5 .

Beaucoup d'objets peuvent spécifier les gestionnaires d'événements . Ceux-ci agissent comme des auditeurs non capturés pour l'objet sur lequel ils sont spécifiés. [DOM]

Un gestionnaire d'événements a un nom, qui commence toujours par " on " et est suivi du nom de l'événement pour lequel il est destiné.

Un gestionnaire d'événements peut soit avoir la valeur nulle, soit être configuré sur un objet de rappel, soit être configuré pour un gestionnaire non compilé non utilisé . Le type de fonction de rappel de EventHandler décrit comment cela est exposé aux scripts. Initialement, les gestionnaires d'événements doivent être mis à zéro.

Les gestionnaires d'événements sont exposés de deux façons.

La première façon, commune à tous les gestionnaires d'événements, est en tant qu'attribut IDL du gestionnaire d'événements .

La deuxième façon est en tant qu'attribut de contenu du gestionnaire d'événements .

Attributs IDL du gestionnaire d'événements

Un attribut IDL du gestionnaire d'événements est un attribut IDL pour un gestionnaire d'événements spécifique. Le nom de l'attribut IDL est identique au nom du gestionnaire d'événements .

Le gestionnaire d'événements sera la fonction attribuée à l'attribut IDL. Cette fonction (ou rappel) sera appelée avec l'événement comme son seul argument:

Invoquer un rappel avec un argument, dont la valeur est l'objet Event E

Exemple:

 document.querySelector("button").onclick = function(evt) { console.log('Event: ' + evt); }; 
 <button>Click!</button>