标签:
请先看此段代码:
function f2() { var n = 999; returnfunction () { alert(n += 1); return n; } } var result = f2(); result(); result(); result();
f2是外部函数,它返回一个函数。。。这里的输出结果是:1000,1001,1002
上面这段代码其实就是闭包的表达形式。正常情况下若f2只是返回n,见如下代码:n的值是不被记录的。
function f2() { var n = 999; return alert(n+=1); } var result = f2; result(); result(); result();
这里的输出结果是:1000,1000,1000
在JavaScript中有作用域和执行环境的问题,在函数内部的变量在函数外部是无法访问的,在函数内部却可以得到全局变量。
在有的需求下,我们想封装一个变量。但有想通过函数外部去访问这个变量,这个时候闭包就起作用了。
标签:
原文地址:http://www.cnblogs.com/chenjianxiang/p/4947932.html