Reflection in computer science means the ability of computer program to examine and modify the structure and behavior of the program at runtime. It is also a key strategy of meta programming. It can be used for modifying program execution at runtime. A reflection-oriented program component can monitor the execution of an enclosure of code and can modify itself according to a desired goal related to that enclosure.
function factorial(n) local x = 1 for i = 2,n do x = x * i end return x end