李权20200828
闭包的三个概念
*1.函数嵌套函数*
*2.内部函数引用外部函数的变量*
*3.外部函数被引用的变量不会被销毁,而是会被隐藏下来*
闭包的优点:
1.闭包让外部访问局部变量成为了可能
2.可以避免使用全局变量,造成全局污染
3.局部变量常驻内存中
闭包的缺点:
1.占用过多的内存,造成内存泄漏
理解闭包的一些列子
请大家在看这些列子的时候,一定要想想闭包的概念
function f1() { var count = 1; return function () { var i = 1; console.log(++count,++i); }}var a = f1();a() //2,2a() //3,2a() //4,2/*造成上面的原因:因为内部函数调用了外部函数的变量 count 所以根据闭包的第三个概念,count不会被销毁,会一直保存下来所以他的值一直递增,而内部函数本身是一个普通函数,它内部的变量的生命周期是函数结束时被销毁 */
*2.这下面列子是一个逐渐变化的过程*
var count = 0;function show() { return ++count;}console.log(show()) // 1console.log(show()) // 2console.log(show()) // 3/** 这是因为上面的变量是一个全局变量,程序结束时被销毁,所以会依次递增
近期评论