Js结束(面试问题)
1.闭包的本质是在一个函数中创建另一个函数。
2
匿名函数赋给f作为fun的返回值。
这相当于f = function () {var n = 0...},
而且匿名函数内部引用了fun中的变量num,所以变量num是不能销毁的。
变量n是每次被调用时新创建的,所以每次执行F时都会把自己的变量和自己一起销毁。
结果最后只剩下孤独的num,所以这里就出现了内存消耗的问题
3.定时器和关闭
最后总结一下封闭的优缺点。
利益
(1)保护函数中变量的安全,实现封装,防止变量流入其他环境时发生命名冲突。
(2)在内存中维护一个变量可以作为缓存使用(但过多使用也是一个缺点,消耗内存)
③匿名自执行功能可以减少内存消耗。
不足之处
(1)以上几点有一点已经反映出来了,就是不能销毁被引用的私有变量,增加了内存消耗,造成内存泄漏。解决方案是手动指定null值;在使用后添加到变量中;
其次,因为闭包涉及跨域访问,所以它们会