JavaScript 엔진이 얼마나 많은 재귀 호출을 할 수 있는지 궁금하십니까?
재귀 호출 횟수
다음 기능을 사용하면 답을 찾을 수 있습니다. (Ben Alman의 요지에서 영감을 얻음)
3가지 결과:
이 숫자는 무엇을 의미하나요? Mr. Aleph는 V8에서 재귀 호출 수가 스택 크기와 스택 프레임 크기(매개변수를 보유하는 로컬 변수)라는 두 가지 양에 따라 달라진다고 지적했습니다. ComputeMaxCallStackSize()에 지역 변수를 추가하여 이를 확인할 수 있습니다. 이는 낮은 값을 반환합니다.
ECMAScript 6의 테일 콜 최적화
ES6에는 테일 호출 최적화 기능이 있습니다. 함수의 마지막 단계도 함수 호출인 경우 하위 함수를 통해 호출되는 대신 "건너뛰기"됩니다. 이는 ES6(엄격 모드)에서는 ComputeMaxCallStackSize 함수를 약간만 변경하면 영원히 실행될 수 있음을 의미합니다.