閉包是指 有權訪問另外一個函數做用域中的變量的 函數。ajax
函數式閉包(在內部保存數據和對外部無反作用)閉包
在一個函數內部建立另外一個函數(閉包)函數
普通函數:在outer()執行完,局部變量local被銷燬,內存僅僅保存全局做用域。性能
function outer() { var localVal = 30; return localVal; } outer(); // 30
閉包:在outer()執行後,func()仍然能夠訪問outer()內部的localVal,由於func()將outer()的內的活動對象(localVal)添加到了func()的做用域鏈。在outer()執行後,因爲localVal被func()的做用域鏈所引用,因此localVal不會被銷燬,而是存在內存中,直到func()被銷燬,纔會隨之銷燬。url
function outer() { var localVal = 30; return function() { return localVal; } } var func = outer(); func(); // 30
!function() { var localData = "localData here"; document.addEventListener('click', function() { console.log(localData); } ); }();
!function() { var localData = "localData here"; var url = "http://www.baidu.com/"; $.ajax({ url: url; success: function() { console.log(localData); } }); }();
循環code