callee sample 4 - garevna/js-course GitHub Wiki

:arrow_backward: arguments.callee

:coffee: 4

Создадим функцию, которая "накапливает" результаты собственных вычислений

Пусть это будет функция, вычисляющая факториал числа

var factorial = function ( num ) {
        var res = 1, n = 1
        while ( n <= num )  res *= n++
}

"модифицируем" ее следующим образом:

var factorial = function ( num ) {
     if ( !arguments.callee.res )  arguments.callee.res = []
     var res = 1, n = 1
     while ( n <= num )  res *= n++
     arguments.callee.res.push ( res )
     return res
}

Вызовем ее с различными значениями аргумента и выведем в консоль значение свойства res:

factorial ( 5 )
factorial ( 10 )

console.log ( factorial.res )

Получим массив [ 120, 3628800 ]

:arrow_backward: arguments.callee