//关于闭包常见的错误:循环闭包
undefined
//要注意在第一个例子里面最后得到的全是4,因为这个for是全部执行之后的结果,你在编译完成之后执行就已经是4了,然后你触发事件的时候也全是4,也就是说你没保留住原来的i
undefined
//在第二个里面它定义的匿名函数里面是可以成功保留住i
undefined
//那个i会取自每一次bi bao的i
undefined
//在第二张图里面我们可以看到bibao的另一个好处就是说你先通过export将它的访问权限定义在外,然后就可以通过export去访问里面的函数,但是不可能直接访问
undefined
//而且export只能访问一些方法,不能访问全部的变量
undefined
//但是bibao也是有缺点的,因为你定义的变量会被一直被存储,因为不知道你什么时候还会用,由此就会有内存的泄漏和性能消耗等缺点
闭包
好处:灵活和方便,可以做一些封装
问题:空间浪费 内存泄漏 性能消耗
闭包的概念
闭包的概念
function foo(x) { var tmp = 3; return function (y) { alert(tmp + y + x); } } var bar = foo(2); //bar现在就是闭包 bar(10);
调用完普通函数局部变量会被释放,调用有闭包引用的函数,引用的局部变量不会进行释放
闭包封装局部变量
通过匿名函数闭包,实现alert出for循环里对应的i的当前值
闭包优点:灵活和方便,封装
闭包缺点:空间浪费,内存泄漏,性能消耗
闭包的概念
可以用window,export将函数体内部变量export传递到外部,以及带来的好处。
第二块代码实现闭包的意义。
闭包总结0
封装。。。。
常见闭包循环
闭包作用0
闭包例子0
闭包来实现封装
闭包
优点:灵活和方便;封装
缺点:空间的浪费,内存泄露,性能消耗
循环闭包例子
document.addEventListener添加点击事件,要用外层的局部变量
success回调函数里去用外层的局部变量
左边调用后会被释放,右边调用后不会被释放,调用outer()后返回的是匿名函数,匿名函数仍然可以访问外面的局部变量localVal
aaaaa
闭包的概念
闭包的理解: 闭包就是能够读取其他函数内部变量的函数 可以把闭包简单理解成“定义在一个函数内部的函数”。 所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。
闭包,不同与一般的函数,它允许一个函数在立即此法作用域外调用时,仍可访问非本地变量。
优点:灵活和方便;封装
缺点:空间的浪费,内存泄露,性能消耗
闭包的概念
这是笔记哦,,做个实验