js에서의 최대 한도는 다음과 같은 함수를 이용해서 구할 수 있다.
function a(n) {
try { return a(n + 1) }
catch(e) { return n }
}
console.log(a(0));
꼬리 재귀 함수다.
javascript에서는 함수 스택이 부족할 때의 오류를 try catch 문으로 처리할 수 있으므로 위와 같은 코드로 측정이 가능하다.
오류가 나지 않을 시 n에 1씩 더해 가면서 리턴 값을 1씩 늘린다. 오류가 날 시에는 n을 반환해 꼬리재귀로 그 n이 그대로 첫 함수에서도 반환된다. 즉 최대 함수 스택을 구하게 된다.
Firefox 에서는 21000 정도가 나왔다.
무슈 혹시 크로크무슈?