Appeler une fonction avec des parenthèses vides ou sans parenthèses du tout peut sembler sans conséquence pour des fonctions sans arguments. Cependant, un examen plus approfondi révèle une distinction subtile.
Considérez les deux exemples suivants :
window.onload = initAll();
window.onload = initAll;
1 . Invocation immédiate :
Dans le premier exemple, les parenthèses vides appellent immédiatement la fonction initAll() et la valeur de retour est affectée à window.onload. En règle générale, ce n'est pas le comportement souhaité car initAll doit s'exécuter lorsque l'événement onload se produit.
2. Affectation de référence :
Dans le deuxième exemple, la fonction initAll elle-même est affectée à window.onload. Cela signifie que la fonction ne s'exécutera pas tant que l'événement de chargement ne sera pas déclenché. Cette approche garantit que le gestionnaire d'événements est correctement configuré.
En JavaScript, les fonctions sont des objets de première classe. Cela signifie qu'ils peuvent être stockés dans des variables, passés en arguments et attribués en tant que propriétés. C'est pourquoi la syntaxe suivante est valide :
window.onload = () => initAll();
Dans ce cas, une fonction anonyme est créée qui, lorsqu'elle est invoquée, appelle immédiatement initAll(). Cependant, la référence de cette fonction externe est toujours attribuée à window.onload, donc le gestionnaire d'événements attendra que l'événement de chargement déclenche l'exécution des deux fonctions.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!