Maison >interface Web >js tutoriel >Existe-t-il des exceptions à la dépréciation des paramètres de chaîne dans setTimeout ?
Malgré le consensus largement répandu selon lequel le passage de chaînes à setTimeout n'est pas souhaitable, il peut y avoir des cas où cela la pratique est divertissante. Cela soulève la question : existe-t-il des raisons légitimes de violer cette convention ?
La raison conventionnelle du rejet des paramètres de chaîne est qu'ils s'exécutent dans une portée globale, ce qui entraîne des problèmes de performances et des vulnérabilités de sécurité potentielles. La syntaxe moderne évite cette approche en faveur du passage de fonctions comme arguments à setTimeout :
setTimeout(function() { doSomething(someVar); }, 10000);
Considérez le scénario dans lequel une fonction ou une variable existe globalement mais est remplacée localement. Le développeur peut envisager d'utiliser la syntaxe obsolète pour accéder à l'instance globale :
setTimeout('doSomething(someVar)', 10000);
Cependant, l'accès aux variables globales via l'objet window (par exemple, window.globalVar) élimine le besoin de cette exception.
L'autorisation des paramètres de chaîne dans setTimeout et setInterval est probablement due à leur préséance historique. Initialement, ces fonctions n'acceptaient que les chaînes contenant du code à exécuter. L’introduction des objets Function comme arguments valides est venue plus tard. Interdire rétroactivement les paramètres de chaîne briserait le code existant.
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!