Pourquoi la propriété Arguments.callee.caller a été obsolète en JavaScript
En JavaScript, arguments.callee.caller a été introduit puis obsolète. Cependant, certains navigateurs le prennent toujours en charge, tandis que d’autres l’ont complètement omis. La question se pose : pourquoi cette fonctionnalité apparemment utile a-t-elle été abandonnée ?
Le besoin de récursion
Dans les versions 早期 de JavaScript, les expressions de fonctions nommées n'étaient pas prises en charge. Cela rendait difficile la création d'expressions de fonctions récursives.
Par exemple, considérons la fonction factorielle :
[1,2,3,4,5].map(factorial);
Sans expressions de fonctions nommées, ce code ne fonctionnerait pas. La propriété arguments.callee a fourni une solution :
[1,2,3,4,5].map(function(n) { return (!(n>1))? 1 : arguments.callee(n-1)*n; });
Inconvénients d'Arguments.callee
Cependant, arguments.callee présentait plusieurs inconvénients :
La solution d'ECMAScript 3
ECMAScript 3 a introduit des expressions de fonction nommées, éliminant le besoin d'arguments.callee.
Par exemple :
[1,2,3,4,5].map(function factorial(n) { return (!(n>1))? 1 : factorial(n-1)*n; });
Cette approche offre plusieurs avantages par rapport arguments.callee :
Conclusion
La dépréciation de arguments.callee.caller était essentielle pour améliorer les capacités d'optimisation de JavaScript et garantir un comportement cohérent lors des appels de fonction. Les expressions de fonction nommées offrent une alternative plus fiable et plus efficace pour la récursivité et l'accès au contexte appelant.
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!