Maison >interface Web >js tutoriel >Pourquoi les parenthèses n'entourent-elles pas toujours les appels de fonction dans `setTimeout` ?

Pourquoi les parenthèses n'entourent-elles pas toujours les appels de fonction dans `setTimeout` ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-23 18:27:17761parcourir

Why Don't Parentheses Always Surround Function Calls in `setTimeout`?

Quand utiliser les parenthèses dans les appels de fonction

En examinant le code suivant :

var myFunction = function() {
  setTimeout(myFunction, 1000);
}
myFunction();

On peut se demander pourquoi l'appel de fonction dans setTimeout ne nécessite pas de parenthèses alors que l'invocation de fonction indépendante fait.

Comprendre la distinction

  • maFonction : Ce nom fait référence à la définition de la fonction.
  • myFunction() : L'ajout de parenthèses invoque le function.

Arguments de la fonction Timeout

setTimeout prend une référence de fonction comme l'un de ses arguments. Dans le code donné, myFunction est référencée comme fonction de rappel.

Parenthèses dans les arguments de délai d'attente

L'inclusion de parenthèses dans setTimeout(myFunction(), 1000) peut avoir des conséquences inattendues si myFunction renvoie une fonction (par exemple, en utilisant des fonctions fléchées). Dans de tels cas, setTimeout recevrait la valeur de retour de myFunction au lieu de la référence de fonction elle-même. Cela pourrait conduire à des exécutions de fonctions répétitives ou à un comportement inattendu.

Par conséquent, lors de l'utilisation de setTimeout ou de méthodes similaires qui attendent une référence de fonction, il est généralement recommandé de omettre les parenthèses pour l'argument de la fonction.

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