Maison >interface Web >js tutoriel >Pourquoi ma fonction « setTimeout » s'exécute-t-elle immédiatement ?
Pourquoi setTimeout exécute-t-il ma fonction immédiatement ?
Lors de l'utilisation de setTimeout, vous pouvez rencontrer un scénario dans lequel le temps d'attente spécifié est ignoré, ce qui entraîne la fonction à exécuter instantanément. Ce comportement découle d'une idée fausse courante dans la syntaxe utilisée.
Le piège :
L'extrait de code ci-dessous illustre le problème :
setTimeout(testfunction(), 2000);
L'explication :
Dans le code, testfunction() est invoqué immédiatement en utilisant des parenthèses. Cela signifie que setTimeout est programmé pour attendre le résultat de testfunction(), qui est exécuté instantanément.
La solution :
Pour s'assurer que setTimeout attend le résultat souhaité time avant d'exécuter la fonction, utilisez plutôt cette syntaxe :
setTimeout(testFunction, 2000);
Notez l'absence de parenthèses après testFunction. En omettant les parenthèses, vous transmettez la référence à la fonction elle-même, et non le résultat de son appel.
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!