闭包:函数执行形成的私有作用域,保护里面的私有变量不受干扰,这种保护机制称之为闭包
开发者认为:形成一个不销毁的私有作用域(私有栈内存)才是闭包
// 柯理化函数
function fn(){
return function(){
}
};
var f = fn(); // f 占用了 fn return 的函数,所以 fn 不能销毁
// 惰性函数
var ff = (function(){ // ff占用了 自执行函数 return的obj所以自执行函数形成的作用域不会销毁
return {}
})()
// 尽量减少闭包的使用(不销毁的堆栈内存是耗性能的)
// 闭包具有保护作用:保护私有变量不受外界干扰
// 闭包具有保存作用:形成不销毁的堆栈内存,方便后面的调取使用
// 所有的事件绑定都是异步编程
// 同步:一件一件做,当前事情没做完下个事情不能处理,
// 异步:当前事情没完成,不等待,继续执行下面的任务
tab,
在es5中只有全局作用域和函数执行形成的私有作用域,判断和循环不会产生任何作用域 ,所以为什么以下代码不能实现,因为两点:闭包作用域,及作用域链的查找机制,2: js 异步编程