云南专业网站制作公司,在阿里巴巴做网站多少钱,wordpress 导入插件,o2o营销JS内存泄漏
1.意外的全局变量
全局变量的生命周期很长#xff0c;直到页面关闭#xff0c;它都存活#xff0c;所以全局变量上的内存一直都不会被回收 当全局变量使用不当#xff0c;没有及时回收#xff08;手动赋值null#xff09;#xff0c;或者拼写错误等将某个变…JS内存泄漏
1.意外的全局变量
全局变量的生命周期很长直到页面关闭它都存活所以全局变量上的内存一直都不会被回收 当全局变量使用不当没有及时回收手动赋值null或者拼写错误等将某个变量挂载到全局变量时也就发生了内存泄漏
2.遗忘的定时器 和 事件监听
在组件内部挂载了定时器事件setTimeoutwindow.addEventListener() 如果在组件销毁时没有主动清除这个函数内部引用的变量或函数都不会被垃圾回收机制回收如果回调函数内部引用的变量或函数都不会被垃圾回收机制回收如果引用变量存储了大量的数据就白白占用了内存造成大量内存泄漏
3.遗漏的DOM元素
DOM元素的生命周期正常是取决于是否挂载在DOM树上当从DOM树上移除时也就可以被销毁回收了 但是如果某个DOM元素在js中也持有它的引用时那么它的生命周期就是由js和是否在DOM树上两者决定了记得移除时两个地方都需要去清理才能正常回收
4.错误使用闭包
函数本身会持有它定义时所在的词法环境但是通常情况下使用完函数后该函数所申请的内存都会被回收了但是当一个函数内在返回一个函数的时候由于函数内部持有外部函数的词法环境而返回的函数又被其他生命周期的东西所持有导致外部函数虽然执行完了但内存无法被回收
所以返回的函数它的生命周期不宜过长方便该闭包能够及时被回收