Maison >interface Web >js tutoriel >Existe-t-il des exceptions à la dépréciation des paramètres de chaîne dans setTimeout ?

Existe-t-il des exceptions à la dépréciation des paramètres de chaîne dans setTimeout ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-20 07:37:291030parcourir

Are There Exceptions to the Deprecation of String Parameters in setTimeout?

La dépréciation du passage de chaînes à setTimeout : y a-t-il déjà une exception ?

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!

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