It is when a function calls another function within itself and it receives a variable from the upper scope and in turn returns the function.