配列の全要素の合計を求める関数を考える。
この場合の配列は、整数の配列であるとする。

elispだと、以下のようになる。

(defun sum (arr)
  "Print sum of ARR(Array)."
  (defun sum-in (arr n gokei)
    (setq gokei (+ gokei (aref arr n)))
    (if (equal (length arr) (+ n 1))
        gokei
      (sum-in arr (+ n 1) gokei)))
   (sum-in arr 0 0))
(sum [1 2 3 4 5])
15

defun を関数内部で使っているので、ラムダ式に書き直す。

(defun sum2 (arr)
  "Print sum of ARR(Array), use lambda expression."
  (let ((f (lambda (arr n gokei)
             (setq gokei (+ gokei (aref arr n)))
             (if (equal (length arr) (+ n 1))
                 gokei
               (funcall f arr (+ n 1) gokei)))))
    (funcall f arr 0 0)))
(sum [1 2 3 4 5])
15

これを JavaScriptで書き直すと以下のようになる。

const sum2in = function(arr, n, gokei) {
  gokei = gokei + arr[n];
  console.log('n:' + n + ' gokei:' + gokei)
  n++
  if (n === arr.length) {
    return gokei;
  }
  return sum2in(arr, n, gokei);
}
const sum2 = function(array) {
  return sum2in(array, 0, 0);
}

console.log('sum2', sum2([1, 2, 3, 4, 5]))

n:0 gokei:1
n:1 gokei:3
n:2 gokei:6
n:3 gokei:10
n:4 gokei:15
15