Maison >interface Web >js tutoriel >Appels de fonction JavaScript : parenthèses vides – Invocation immédiate ou affectation de référence ?

Appels de fonction JavaScript : parenthèses vides – Invocation immédiate ou affectation de référence ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-08 13:56:11335parcourir

JavaScript Function Calls:  Empty Parentheses – Immediate Invocation or Reference Assignment?

Invocation de fonctions JavaScript : les parenthèses comptent

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.

Invocation immédiate et affectation de référence

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é.

Fonctions en tant qu'objets

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn