De nombreux développeurs désapprouvent la pratique consistant à transmettre des chaînes à setTimeout en raison de problèmes de performances, de risques de sécurité potentiels et de son caractère obsolète. statut. Cependant, il peut y avoir de rares scénarios où cette syntaxe pourrait être bénéfique.
La syntaxe traditionnelle pour setTimeout et setInterval impliquait de transmettre une chaîne qui représentait le code à exécuter. Par exemple :
<code class="javascript">setTimeout('doSomething(someVar)', 10000);</code>
Cependant, le JavaScript moderne favorise l'utilisation de références de fonctions à la place :
<code class="javascript">setTimeout(function() { doSomething(someVar); }, 10000);</code>
Le débat surgit lorsqu'on se demande s'il existe existe-t-il des raisons valables de s'écarter de la syntaxe recommandée. Un argument possible pourrait être le désir d'accéder à une fonction ou à une variable qui réside dans la portée globale mais qui aurait pu être remplacée localement.
Malgré cette justification, l'utilisation de chaînes dans setTimeout est fortement déconseillé. Les variables globales sont toujours accessibles via les propriétés de l'objet fenêtre. Par exemple :
<code class="javascript">setTimeout(window.doSomething(someVar), 10000);</code>
L'autorisation de chaînes comme arguments pour setTimeout et setInterval est probablement enracinée dans des facteurs historiques. Les premières versions de JavaScript ne prenaient en charge que les chaînes. L'ajout de la possibilité de transmettre des références de fonction a été un ajout ultérieur. Pour garantir une compatibilité ascendante, les navigateurs autorisent toujours la syntaxe de chaîne, même si elle est obsolète.
Bien qu'il soit techniquement possible de passer des chaînes à setTimeout dans certains cas, la pratique n'est généralement pas recommandé en raison de la disponibilité d’approches alternatives. L'utilisation de références de fonctions offre des performances améliorées, renforce la sécurité et respecte les directives de code modernes. Par conséquent, la syntaxe de chaîne obsolète doit être évitée pour des raisons de clarté, de maintenabilité et de qualité globale du code.
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!