一、未声明/意外的全局变量
let a = 'ceshi';
function test() {
b = 'aaa'; // b成为一个全局变量,不会被回收
}
test()
解决方法: 在js开头添加 'use strict';
二、遗忘的定时器(setTimeout/setInterval)
let someData = getData()
setInteval(function() {
let node = document.getElementById('node')
if(node) {
node.innerHTML = JSON.stringify(someData)
}
}, 1000)
解决方法:用一个变量let intervalId 去接收setInteval函数,在不使用的时候进行清除 clearInterval(intervalId)
三、事件绑定,以react框架为例
class Test extends React.Component {
componentDidMount() {
window.addEventListener('resize',this.handleResize)
}
handleResize() {
}
render() {
return <div>Test Component</div>
}
}
解决方法:添加钩子函数移除事件
class Test extends React.Component {
componentWillUnmount() {
window.removeEventListener('resize', this.handleResize)
}
}
四、闭包
正常来说,闭包并不是内存泄漏,但会造成内存的消耗,所以不应该滥用闭包
974

被折叠的 条评论
为什么被折叠?



