javascript中關於函數內部變量的調用方法(閉包)

      閉包(closure)是Javascript的特點,不少高級應用都要依靠閉包實現。
      首先必須理解Javascript變量做用域。全局變量和局部變量。函數內部可以讀取全局變量,可是在外部沒法讀取函數內部變量。而閉包就是解決外部獲得函數內的局部變量。 javascript

閉包的用途
一、讀取函數內部的變量;
二、讓函數內部的變量的值始終保持在內存中。 html

在下面的代碼中我將詳細說明閉包的用法和個人一些理解 java

<!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> 閉包

相關文章
相關標籤/搜索