早期 버전의 JavaScript에서는 명명된 함수 표현식이 지원되지 않았습니다. 이로 인해 재귀 함수 표현식을 작성하기가 어려워졌습니다.
예를 들어 계승 함수를 고려해보세요.
명명된 함수 표현식이 없으면 이 코드는 작동하지 않습니다. Arguments.callee 속성은 해결책을 제공했습니다.
Arguments.callee의 단점[1,2,3,4,5].map(factorial);그러나args.callee에는 몇 가지 단점이 있었습니다.
[1,2,3,4,5].map(function(n) { return (!(n>1))? 1 : arguments.callee(n-1)*n; });인라인, 테일 재귀 등의 최적화를 방지했습니다.
재귀 호출 중에 this의 값을 변경했습니다.
ECMAScript 3의 솔루션이 접근 방식은 인수.callee에 비해 몇 가지 장점을 제공합니다.
다른 함수와 마찬가지로 함수를 호출할 수 있습니다.
네임스페이스를 오염시키지 않습니다.
[1,2,3,4,5].map(function factorial(n) { return (!(n>1))? 1 : factorial(n-1)*n; });재귀 호출 내에서 이 무결성을 유지합니다.인수 객체에 액세스하는 오버헤드를 제거하여 성능을 향상시킵니다.
위 내용은 JavaScript에서 'arguments.callee.caller'가 더 이상 사용되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!