Maison >interface Web >js tutoriel >Quelle est la différence entre `window.onload = initAll();` et `window.onload = initAll;` en JavaScript ?

Quelle est la différence entre `window.onload = initAll();` et `window.onload = initAll;` en JavaScript ?

DDD
DDDoriginal
2024-12-07 12:14:12789parcourir

What's the Difference Between `window.onload = initAll();` and `window.onload = initAll;` in JavaScript?

Parenthèses dans les appels de fonctions JavaScript

En JavaScript, appeler une fonction sans parenthèses peut sembler anodin lorsqu'aucun argument n'est impliqué. Cependant, une différence subtile apparaît entre les deux syntaxes :

window.onload = initAll();
window.onload = initAll;

Lorsque des parenthèses sont utilisées :

Utiliser des parenthèses dans un appel de fonction, comme dans le premier exemple, exécute la fonction immédiatement. Le résultat de l'exécution de la fonction, le cas échéant, est ensuite affecté à la variable ou à la propriété recevant l'appel de fonction, dans ce cas, window.onload. Cette exécution est généralement indésirable lorsque vous avez l'intention d'attribuer la fonction elle-même à l'écouteur.

Lorsque les parenthèses sont omises :

Omettre les parenthèses, comme dans le deuxième exemple, attribue la référence de fonction directement à la variable ou à la propriété. La fonction ne sera exécutée que lorsque l'auditeur ou l'événement la déclenchera, garantissant ainsi le comportement souhaité.

Remarque supplémentaire :

Une autre variante que vous pouvez rencontrer est :

window.onload = () => initAll();

Ceci utilise une fonction de flèche enroulée autour de initAll. Il crée une fonction qui appelle immédiatement initAll lors de l'invocation. Cependant, comme la fonction externe est affectée à window.onload, elle garantit que initAll est exécuté uniquement lors de l'événement de chargement.

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