闭包会导致内存泄露为什么还要用闭包,不用闭包可不可以,
创新互联主要从事成都网站设计、成都网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务新荣,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
个人对闭包的理解是:“函数使用了函数外定义的变量了”
但是一般大家所说的闭包是指嵌套的函数么,
闭包会导致内存泄露为什么还要用闭包,不用闭包可不可以,
个人对闭包的理解是:“函数使用了函数外定义的变量了”
但是一般大家所说的闭包是指嵌套的函数么,如:
当内存占用越来越高,轻则影响系统性能,重则导致进程崩溃。Chrome限制了浏览器所能使用的内存极限,64位为1.4GB,32位为1.0GB。
1.意外的全局变量
.未声明变量
.使用this创建的变量(this指向window)
解决办法:
.避免创建全局变量
.使用严格模式,在js文件头部或者函数的顶部加上use strict
2.闭包引起的内存泄露
原因:闭包可以读取函数内部的变量,然后让这些变量是始终保存在内存中。如果在使用结束后没有将局部变量清除,就可能导致内存泄露。
解决:将事件处理函数定义在外部,解除闭包,或者在定义事件处理函数的外部函数中。
3.没有清除的DOM元素引用
原因:虽然别的地方删除了,但是对象中还存在对DOM的引用。
解决办法:手动删除,赋值为null
4.被遗忘的定时器或者回调
解决办法:手动删除定时器和DOM,removeEventListener移除事件监听
1)意外的全局变量引起的内存泄露
2)闭包引起的内存泄露
3)没有清理的DOM元素引用
4)被遗忘的定时器或者回调
5)子元素存在引起的内存泄露