javaScript的閉包 js變數範圍

來源:互聯網
上載者:User

標籤:rom   記憶體流失   public   效能   將不   技術   code   相同   回收   

js的閉包

js的變數範圍:

  var a=90; //定義一個全域變數    function test(){            a=123; //使用外層的 a變數     }        test();    document.write("a="+a);
  var a=90; //定義一個全域變數    function test(){            var a=123; //定義一個局部變數    }        test();    document.write("a="+a);
   a=90; //沒有var ,就會試著去找(父函數 的 a),如果找不到就建立 a    function test(){          a=123; //沒有var ,就會試著去找(父函數/外層 的 a),如果找不到就建立 a    }      test();    document.write("a="+a);

1.      js允許函數中有函數

2.     如果使用變數,如果該變數有var ,則表示建立全新的變數 ,如果該變數是直接寫在頁面,則我們認為是全域變數,否則是局部變數, 如果沒有帶var關鍵字, 則js引擎會這樣處理: 首先到父函數去找有沒有該變數,如果有,則使用,如果沒有則建立之.

  function f1(){    //var n=999;//局部變數        n=999;//全域變數  }       f1();   alert(n);

3.      上面的代碼說明,如果在一個函數中,直接使用  比如n=900; 相當於建立了一個全域變數.

 js中如何解決從外部讀取內建函式的局部變數

function test1(){      var n=90;//布局變數   }alert(n) //錯誤

解決方案->閉包

function test1(){    var n=90;    //test1函數的內建函式,可以訪問 var n    funciton test2(){      window.alert(n++);  }  //把內建函式test2返回外部調用者    return test2;}

var res=test1();//調用test1 ,返回 test2函數這時res就是test1內建函式 test2別名

 

res();

閉包: 你可以這樣理解 : test2()實現閉包

u  閉包的主要用處是

1.      把局部變數儲存在記憶體中,不讓記憶體回收機制,將其回收.

2.      讓外部去訪問內建函式的布局變數.

有時希望n能夠累加,不希望記憶體回收機制將其回收,這時候用到了閉包

閉包

※ 使用閉包的注意點

1)由於閉包使得函數中的變數被儲存在記憶體中,記憶體消耗很大,所以不能濫用閉包,否則造成網頁效能問題,在ie瀏覽器中可能導致記憶體流失。解決方案,在退出函數之前,將不使用的局部變數全部刪除。

2)閉包會在父函數外部,改變函數內部的值。所以,如果你把父函數當做對象(object)使用,把閉包當做它的公用方法(Public Method),把內部變數當做它的私人屬性(private value),這時一定要小心,不要隨便改變父函數內部變數的值。

※ js中函數名不能重複

  1. 在不同檔案中,可以有相同的函數名.
  2. 在不同父函數(類), 即使在同一個頁面,可以有相同函數,比如下面代碼abc.html

 

 

javaScript的閉包 js變數範圍

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.