自己做网站的成本,广州网站建设公司有哪些,个人简历样本范文,域名如何备案教程JavaScript高级程序设计(第4版)读书分享笔记记录 适用于刚入门前端的同志 4.3.3 性能 垃圾回收程序会周期性运行#xff0c;如果内存中分配了很多变量#xff0c;则可能造成性能损失#xff0c;因此垃圾回收的 时间调度很重要。尤其是在内存有限的移动设备上#xff0c;垃圾… JavaScript高级程序设计(第4版)读书分享笔记记录 适用于刚入门前端的同志 4.3.3 性能
垃圾回收程序会周期性运行如果内存中分配了很多变量则可能造成性能损失因此垃圾回收的 时间调度很重要。尤其是在内存有限的移动设备上垃圾回收有可能会明显拖慢渲染的速度和帧速率。开发者不知道什么时候运行时会收集垃圾因此最好的办法是在写代码时就要做到无论什么时候开始收集垃圾都能让它尽快结束工作。内存泄漏 写得不好的 JavaScript 可能出现难以察觉且有害的内存泄漏问题。在内存有限的设备上或者在函数会被调用很多次的情况下内存泄漏可能是个大问题。JavaScript 中的内存泄漏大部分是由不合理的引用导致的。意外声明全局变量是最常见但也最容易修复的内存泄漏问题。
function setName() { name Jake;
}
此时解释器会把变量 name 当作 window 的属性来创建相当于 window.name Jake。 可想而知在 window 对象上创建的属性只要 window 本身不被清理就不会消失。这个问题很容易解决只要在变量声明前头加上 var、let 或 const 关键字即可这样变量就会在函数执行完毕后离开作用域。定时器也可能会悄悄地导致内存泄漏。let name Jake;
setInterval(() { console.log(name);
}, 100); 只要定时器一直运行回调函数中引用的 name 就会一直占用内存。垃圾回收程序当然知道这一点因而就不会清理外部变量。 使用 JavaScript 闭包很容易在不知不觉间造成内存泄漏。let outer function() { let name Jake; return function() { return name; };
}; 调用 outer()会导致分配给 name 的内存被泄漏。以上代码执行后创建了一个内部闭包只要返回 的函数存在就不能清理 name因为闭包一直在引用着它。假如 name 的内容很大不止是一个小字符串那可能就是个大问题了。