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 정도가 나왔다.