闭包:1.打破一般的作用域链的形式,使外部可以访问到局部作用域变量的内容
2.使访问的局部变量保存在内存中,而不是函数执行完之后就被销毁。
闭包的形式一:
<script type="text/javascript"> function f1() { var a = 12; return function() { return a; } } var func = f1(); alert(func()); </script>
在f1中返回一个函数,该函数访问了f1的局部变量,并将其return,这样在外部调用f1的返回值,即执行该函数,就可以间接的访问到f1的局部变量a。这样打破了传统的作用域链的形式,这就是闭包。
闭包形式二:
function f1(param) { var n = function() { return param; } param++; return n; } var func = f1(123); alert(func());//124