Maison  >  Article  >  interface Web  >  Les appels de fonctions basés sur des chaînes avec setTimeout peuvent-ils être justifiés ?

Les appels de fonctions basés sur des chaînes avec setTimeout peuvent-ils être justifiés ?

DDD
DDDoriginal
2024-10-20 07:42:02786parcourir

Can String-Based Function Calls with setTimeout Be Justified?

Passer une chaîne à setTimeout : raisons d'évitement et exception

Passer une chaîne à setTimeout ou à son homologue setInterval est généralement mal vu devido des problèmes d'exécution à l'échelle mondiale, des problèmes de performances potentiels et des vulnérabilités de sécurité. L'alternative recommandée est d'utiliser une fonction anonyme comme premier argument.

Cependant, il peut y avoir une grâce salvatrice dans certaines situations. Si le programmeur a l'intention d'accéder à une fonction ou à une variable qui existe dans la portée globale mais qui a été remplacée localement, il peut envisager d'utiliser la syntaxe de chaîne obsolète. Néanmoins, cette approche est considérée comme une mauvaise pratique de programmation en raison du potentiel d'observation des variables.

Dans la plupart des cas, il est possible d'accéder aux variables globales en tant que propriétés de l'objet fenêtre (par exemple, window.globalVar), ce qui le rend inutile de recourir à des appels de fonctions basés sur des chaînes. Par conséquent, il est très peu probable de rencontrer un scénario dans lequel l'utilisation d'une chaîne comme premier argument pour setTimeout ou setInterval serait véritablement bénéfique.

Historiquement, la seule disponibilité d'une chaîne de code comme argument pour ces fonctions provenait de Limites de JavaScript 1.0. L'introduction d'une référence d'objet Function en tant qu'argument n'a eu lieu qu'avec JavaScript 1.2. Le maintien de la compatibilité avec les anciens navigateurs et scripts empêche les développeurs d'éliminer complètement les appels basés sur des chaînes. En comprenant à la fois les mises en garde et les rares exceptions, les programmeurs peuvent prendre des décisions éclairées lors de l'écriture de code impliquant setTimeout et setInterval.

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