Heim >Web-Frontend >js-Tutorial >Warum wurde „arguments.callee.caller' in JavaScript veraltet?
Warum die Eigenschaft Arguments.callee.caller in JavaScript veraltet war
In JavaScript wurde arguments.callee.caller eingeführt und später veraltet. Einige Browser unterstützen es jedoch immer noch, während andere es vollständig weggelassen haben. Es stellt sich die Frage: Warum wurde diese scheinbar nützliche Funktionalität aufgegeben?
Die Notwendigkeit einer Rekursion
In den neuesten Versionen von JavaScript wurden benannte Funktionsausdrücke nicht unterstützt. Dies machte es schwierig, rekursive Funktionsausdrücke zu erstellen.
Betrachten Sie beispielsweise die Fakultätsfunktion:
[1,2,3,4,5].map(factorial);
Ohne benannte Funktionsausdrücke würde dieser Code nicht funktionieren. Die Eigenschaft arguments.callee bot eine Lösung:
[1,2,3,4,5].map(function(n) { return (!(n>1))? 1 : arguments.callee(n-1)*n; });
Nachteile von Arguments.callee
Argumente.callee hatte jedoch mehrere Nachteile:
Die Lösung von ECMAScript 3
ECMAScript 3 führte benannte Funktionsausdrücke ein, wodurch arguments.callee nicht mehr erforderlich war.
Zum Beispiel:
[1,2,3,4,5].map(function factorial(n) { return (!(n>1))? 1 : factorial(n-1)*n; });
Dieser Ansatz bietet mehrere Vorteile gegenüber arguments.callee:
Fazit
Die Abschaffung von arguments.callee.caller war für die Verbesserung von JavaScript von wesentlicher Bedeutung Optimierungsmöglichkeiten und Sicherstellung eines konsistenten Verhaltens bei Funktionsaufrufen. Benannte Funktionsausdrücke bieten eine zuverlässigere und effizientere Alternative für die Rekursion und den Zugriff auf den aufrufenden Kontext.
Das obige ist der detaillierte Inhalt vonWarum wurde „arguments.callee.caller' in JavaScript veraltet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!