學習文章
----阮一峰的網絡日志
---- js閉包的用途
總結筆記
閉包定義:定義在一個函數內部的函數,靜態保存所有了父級作用域的內部函數。
作用:
1.將函數作為參數傳入另外一個函數。
var arr = [2,10,6,9,7,8]; var arr1 = arr.sort(function(a,b){ return a-b; }); alert(arr1); //2,6,7,8,9,10 alert(arr); //2,6,7,8,9,10
2.實現封裝,管理私有變量和私有方法,將變量(狀態)的變化封裝在安全的環境中。
var person = function(){ //變量作用域為函數內部,外部無法訪問,不會與外部變量發生重名沖突 var name = "default"; return { //管理私有變量 getName : function(){ return name; }, setName : function(newName){ name = newName; } } }();
3.匿名自執行函數。在匿名自執行函數傳入一個閉包函數,匿名自執行函數執行完立即銷毀,可以減小內存消耗。
(function(){ var foo = function(){ alert("執行完這個閉包后,立即銷毀"); }; foo(); })();
4.讓變量始終保持在內存中,內存消耗會很大,這是一個缺點。