javascript中关于函数内部变量的调用方法(闭包)

原创
2013/08/19 21:24
阅读数 4.3K

      闭包(closure)是Javascript的特色,很多高级应用都要依靠闭包实现。
      首先必须理解Javascript变量作用域。全局变量和局部变量。函数内部能够读取全局变量,但是在外部无法读取函数内部变量。而闭包就是解决外部得到函数内的局部变量。

闭包的用途
1、读取函数内部的变量;
2、让函数内部的变量的值始终保持在内存中。

在下面的代码中我将详细说明闭包的用法和我的一些理解

<!DOCTYPE html>
<html>
<head>
    <title>javascript中关于函数内部变量的调用方法(闭包)</title>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
</head>
<body>
     <script type="text/javascript">
         function house(){
             var num=1;//房子内人的个数;
             addNum=function(){   //预留的增加函数人数的方法;
                 num+=1;
             }
             function query(){//这个函数就叫闭包
                 alert(num);
                 return num;//返回这个房子的人数
             }
             return query;//返回查询这个房子人数方法的指针及地址;
         }
         var res=house();//将这个房子的查询方法的指针/地址赋给变量res;
         res();//查询房子里面的人数  num=1;
         addNum();//增加房子内人的个数;
         res();//num=2
         //--所谓闭包可以这样理解:我们可以将 function比喻成 var 那么house()就相当于一个全局变量
         //num相当于house()这个全局变量的一个结构,addNum相当于一个改变house()这个全局变量部分结构的方法,
         //query()相当于house()中查询房子内部num结构的方法,因为house()相当于一个全局变量,那么它内部的
         //所以house()的结构也就相当于是全局变量。所以通过addNum()改变num值时num的变化会被保存下来,下次
         //再通过res这个指针访问house()时 num的值是已经改变后的。
     </script>
</body>
</html>

展开阅读全文
打赏
0
8 收藏
分享
加载中
闭包,可不可以理解为,内部函数的作用域链的缓存~
2013/08/21 09:17
回复
举报
更多评论
打赏
1 评论
8 收藏
0
分享
返回顶部
顶部