函数的闭包

闭包就是可以读取其余函数内部变量的函数。闭包

使用闭包主要是为了设计私有的方法和变量。函数

在本质上,闭包是将函数内部和函数外部链接起来的桥梁。spa

优势:是能够避免全局变量的污染。设计

缺点:是闭包会常驻内存,会增大内存使用量,使用不当很容易形成内存泄露。日志

闭包的特色:code

1.函数嵌套函数对象

2.函数内部能够引用外部的参数和变量blog

3.参数和变量不会被垃圾回收机制回收内存

垃圾回收机制与内存泄漏的意义字符串

垃圾回收机制:垃圾回收器按期扫描对象,并计算引用了每一个对象的其余对象的数量。若是一个对象的引用数量为 0(没有其余对象引用过该对象),或对该对象的唯一引用是循环的,那么该对象的内存便可回收。

内存泄漏:内存泄漏指任何对象在您再也不拥有或须要它以后仍然存在。

会引发内存泄漏的有:闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环) setTimeout的第一个参数是字符串不是函数

过多的使用闭包会引发内存泄漏

由于闭包引用着另外一个函数的变量,致使另外一个函数已经不使用了也没法销毁,因此闭包使用过多,会占用较多的内存,这也是一个反作用。

function x(){
var i=0
function y(){
console.log(++i)
}
return y
//y嵌套在x中
//x返回y }
var z=x() z()
//函数x外的变量z引用了函数x内的函数y

 

相关文章
相关标签/搜索