闭包是指 有权访问另外一个函数做用域中的变量的 函数。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