1. 程式人生 > >javascript中閉包最簡單的簡紹

javascript中閉包最簡單的簡紹

覆蓋 計數 在一起 com 想要 .com neu 內部 文章

javascript中閉包是什麽

JavaScript 變量可以是局部變量或全局變量。私有變量可以用到閉包。閉包就是將函數內部和函數外部連接起來的一座橋梁。 函數的閉包使用場景:比如我們想要一個函數來執行計數功能。 如果設計全局變量 1 var counter=0; 2 function add(){ 3 4 return counter++;} // add(); 在瀏覽器調用 add();//值為2 問題是如何當我們設計另外一個方法時用到需要counter這個變量,我們在進行修改無疑會改變counter的初始值如下
<script> 
var counter=0;

function add(){
return counter++;}

function plus(){ return counter=5; } plus();
</script>  
我們此時在調用add() 值就是6 所以設置counter變量為全局變量的時候我們調用函數會得到不想要的值; 思考?如果使用局部變量
function add(){
var counter=0;
return counter++ ;
}
調用add()結果永遠是0,函數運行到 counter=0;就覆蓋變量;
所以我們需要函數外部可以讀取函數變量內部的值,下面就對函數進行了私有化 在 JavaScript 中,所有函數都能訪問它們上一層的作用域 JavaScript 支持嵌套函數。嵌套函數可以訪問上一層的函數變量。 該實例中,內嵌函數 plus() 可以訪問父函數的 counter 變量
  function add() {
            var counter=0 ;
            function plus (){
                counter++; 
            } 
            plus();
            return counter;
         }

  

閉包的寫法 函數的立即執行()() 及函數的聲明和函數的執行放在一起 這就是閉包的最終格式
       var plus=(function add() {
            var counter=0;//定義為局部變量
          return  function(){
                counter++;//
             console.log("counter"+counter);
            }
        })()

  調用plus() ;

閉包就是將函數內部和函數外部連接起來的一座橋梁。

這篇文章https://www.cnblogs.com/lsc-boke/p/6513278.html寫了閉包對內存的影響

javascript中閉包最簡單的簡紹