周末面试过程中,面试官问什么是内存泄露而引发的一系列问题,直接懵了
一、面试官问:什么是内存泄漏?
我心想这不都倒背如流了,直接八股文
JS程序中已动态分配的内存由于某种原因未释放或无法释放而引发的各种问题称为内存泄露
二、又问:什么会引发内存泄露
这不都直接拿捏
意外的全局变量
闭包
未清除的定时器
dom清空了,还存在引用
面试官:“嗯嗯!不错!!!”
1、那你继续说说什么是意外的全局变量
我直接懵逼,最后只能尴尬的说,我没有思考过这个问题。
下面是面试完查的:
JS中对没有声明的变量会默认定义在全局变量windoow上,只有关闭窗口或者刷新页面的时候,全局变量才会被释放,如果一个没有声明的变量上保存了大量的数据,这些数据就会保存在全局变量身上,如果这些数据没有及时释放就会引起内存泄露
2、那你在说下闭包的作用吧
这个也熟
函数外部可以访问到函数内部的局部变量; 延长局部变量的生命周期
3、为什么非要访问函数内部的局部变量呢,我们就不能在全局变量多定义一个变量吗
随口说出:“哪样全局变量不就太多了吗”
4、全局变量过多会造成什么问题
我直接人傻了,被完虐。
下面还是面试完查的:
生存周期长,越多消耗内存越大
容易引发命名冲突
不利于排查错误和调试
总结
希望可以对大家有所帮助,下次被面试官虐的轻点!!!