当一个javascript函数返回时,js解析器会保留它作用域内的所有变量和函数。 注意两个 返回,和作用域。之前已经写了作用域链从内到外找变量的过程。但是这个变量第一次使用后,我还想再次使用,以这个变量为基础,就需要闭包了。 [crayon-50361f9ff2957/] [crayon-50361f9ff2d3a/] js的垃圾回收机制同样是对不再被其他对象引用的变量或方法进行回收,但因为js的引用不仅可指向变量,也可指向函数,在上述js代码中, 只要指向函数c 的引用d 还没有被设为null,那么处在函数c 作用域内的局部变量都不会被js垃圾回收器回收。 局部变量 b 被认为处在一个安全且相对封闭的“闭包”环境中,访问它的唯一方法是通过调用处在同一作用域下的c 函数来进行。 直到c 函数不再被其他对象引用,其作用域内的变量和函数才能被释放回收。 即c = null 根据之前的例子,我们可以用闭包模拟函数的私有变量 [crayon-50361f9ff3121/] [crayon-50361f9ff3508/] [crayon-50361f9ff38f1/] [crayon-50361f9ff3cd9/] »本文地址:http://99jty.com/?p=427 »订阅本站:http://winysky.com/feed/»当你从RSS阅览器里看到这篇文章时,还没有评论,还不赶紧过来抢沙发?