谈谈对闭包的理解
function a(){var i=0;function b(){console.log(i++)}return b;
}
var c=a();//這里執(zhí)行了函數(shù)a,返回函數(shù)b,因此c為函數(shù)b
c();//0,這里調(diào)用了函數(shù)b
c();//1,因?yàn)閕仍然保存在a中,而函數(shù)b保持著對(duì)i的引用,因此i在內(nèi)存中的棧去依然保留
函數(shù)嵌套函數(shù) 里邊的函數(shù)可以使用外部的參數(shù)和變量 參數(shù)和變量不會(huì)被垃圾回收機(jī)制回收
使用閉包主要是為了設(shè)計(jì)私有的方法和變量。
優(yōu)點(diǎn):模塊化開(kāi)發(fā),避免全局變量的污染
缺點(diǎn):閉包會(huì)常駐內(nèi)存,會(huì)增大內(nèi)存使用量,使用不當(dāng)容易造成內(nèi)存泄漏。
特點(diǎn):
總結(jié)
- 上一篇: div+css盒子居中
- 下一篇: CommonJs, AMD/Requir