闭包:
1、 就是能够读取其他函数内部变量的函数。
2、 堆栈溢出:就是不顾堆栈中分配的局部数据块大小,向该数据块写入了过多的数据,导致 数据越界,结果覆盖了别的数据。经常会在递归中发生。
3、 内存泄露是指:用动态存储分配函数内存空间,在使用完毕后未释放,导致一直占据该内 存单元。直到程序结束。指任何对象在您不再拥有或需要它之后仍然存在。
造成内存泄漏:
setTimeout的第一个参数使用字符串而非函数的话,会引发内存泄漏。
闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环) 防止内存泄露:
1、 不要动态绑定事件;
2、 不要在动态添加,或者会被动态移除的dom上绑事件,用事件冒泡在父容器监听事件;
3、 如果要违反上面的原则,必须提供destroy方法,保证移除dom后事件也被移除,这点可 以参考Backbone的源代码,做的比较好;
4、 单例化,少创建dom,少绑事件。
Was this helpful?
0 / 0