Khi một hàm tự gọi chính nó, đó gọi là đệ quy (recursion), JavaScript cũng hoạt động tương tự. Xem ví dụ hàm tự gọi để tính giai thừa:
Ví dụ
<html>
<body>
<script>
function displayFact(value) {
if (value < 0) return -1;
else if (value == 0) return 1; // 0! = 1
else return value * displayFact(value - 1);
}
var res = displayFact(5);
document.write("5 factorial = " + res); // 120
</script>
</body>
</html>
Lưu ý: Luôn cần điều kiện dừng (base case) để tránh stack overflow. JS không tối ưu tail-call (trừ strict mode một số engine), nên đệ quy sâu có thể tràn stack.