Pro javascript 读书笔记之两个函数的比较
2008-09-19 10:01 wlstyle 阅读(318) 评论(0) 收藏 举报当内部函数在定义它的作用域的外部被引用时。就创建了一个该内部函数的一个闭包。在这种情况下。我们称不是内部函数局部变量的变量为自由变量。称外部函数函数的调用环境为封闭闭包的环境。从本质上说。如果内部函数引用了外部函数中的变量,相当于授权该变量可以被延迟使用。因此当外部函数调用完成后。这些变量的内存不会被释放。因为闭包还要使用他们。
example1:
在这个例子中,对outFun()这个外部函数进行了两次调用。发现第二次调用时没有numberof这个变量没有递增为3.而是重新从0开始递增。这说明第二次的调用重新创建了numberof的实例。这也说明在此例子中闭包之间对numberof这个变量在内存中有两个拷贝。闭包对他们的各自封包环境中的变量进行调用。
example2:
在这个例子中。可以看到numberof依次递增。注意到line8的那对双括号,在代码加载的过程中,它已经形成了一个闭包。
在这里numof在内存中只有一个拷贝。这里的globeone,和globetwo是对同一个闭包的引用。所以numof会依次递增。
这个numof就是静态的属性。
通过这两个例子。对闭包有了进一步的认识。
浙公网安备 33010602011771号