A closure is a special kind of object that combines two things: a function, and the environment in which that function was created. The environment consists of any local variables that were in-scope at the time that the closure was created. In this case, myFunc
is a closure that incorporates both the displayName
function and the "Mozilla" string that existed when the closure was created.
In essence, makeAdder
is a function factory — it creates functions which can add a specific value to their argument. In the above example we use our function factory to create two new functions — one that adds 5 to its argument, and one that adds 10.
add5
and add10
are both closures. They share the same function body definition, but store different environments. In add5
's environment, x
is 5. As far as add10
is concerned, x
is 10.
去掉 mce_href="#"
替换<mce:style 为<style
替换<mce:script为<script
Using closures in this way provides a number of benefits that are normally associated with object oriented programming, in particular data hiding and encapsulation.