加载中...
文章
17
标签
14
分类
3
主页
陈Sir
浏览器基础知识要点
主页
浏览器基础知识要点
发表于
2024-07-01
|
更新于
2025-03-05
|
基础知识
|
浏览量:
浏览器基础知识要点
文章作者:
陈Sir
文章链接:
http://cyljj.xyz/2024/07/01/JavaScript/
版权声明:
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议。转载请注明来源
陈Sir
!
浏览器
赞助
微信
上一篇
前端构建&工程化基础知识要点
前端构建 & 工程化基础知识要点
下一篇
JavaScript性能优化
JavaScript性能优化隐藏类12345678910111213console.time('a');for (let i = 0; i < 1000000; ++i) { const obj = {}; obj['a'] = i;}console.timeEnd('a');console.time('b');for (let i = 0; i < 1000000; ++i) { const obj = {}; obj[`${i}`] = i;}console.timeEnd('b'); 1.比较主流的 JS 引擎是 v8,这里假设是跑在 chrome 或 node 上,用的是 v8 引擎V8 是一个 c++ 实现的 js 解析引擎,内部利用 隐藏类(Hidden Class)的方式来存放 JS 对象。2.隐藏类的特性是:多个属性顺序一致的 JS 对象,会重用同一个隐藏类,减少 new Class 的开销。3.所以左边生成1个隐藏类,而右边生成3个隐藏类,因此左边代码性能更好指导代码编写习惯:定义对象或类时,尽可能保证属性顺序一致。 快速模式/字典模式1234567891011121314console.time('a');const arr1 = [];for (let i = 0; i < 10000000; ++i) { arr1[i] = 1;}console.timeEnd('a');console.time('b');const arr2 = [];arr2[10000000 - 1] = 1;for (let i = 0; i < 10000000; ++i) { arr2[i] = 1;}console.timeEnd('b'); 1.比较主流的 JS 引擎是 v8,这里假设是跑在 chrome 或 node 上,用的是 v8 引擎。 2.V8 是一个 c++ 实现的 js 解析引擎,内部有多种方式存放 JS 数组。 3.”数组从 0 到 length-1 无空洞”,会进入快速模式,存放为 array。 4.”数组中间有空洞”,会进入字典模式,存放为 HashMap。(这是 V8 的一个优化策略,保证用最合适的数据结构处理当下场景,如果遇到数据量过大或者是松散结构的话,就改变为HashMap,牺牲遍历性能,换取访问性能。) 指导代码编写习惯 从0开始初始化数组,避免数组进入字典模式。 让数组保持紧凑,避免数组进入字典模式。 内存泄漏内存泄漏是指应用程序中的内存不再被使用但仍然被占用,导致内存消耗逐渐增加,最终可能导致应用程序性能下降或崩溃。内存泄漏通常是由于开发者编写的代码未正确释放不再需要的对象或数据而导致的。 **特征:**程序对内存失去控制内存泄漏的案例: 意外的全局变量: 12345678function someFunction() { // 这是错误注释示例,应改为正确的注释格式 /*! 这个变量会变成全局变量,并可能导致内存泄漏 */ myObject = { key: 'value' };}someFunction();console.log(myObject); // 可以在全局作用域访问到 myObject,说明它成了全局变量 闭包:闭包可能会无意中持有对不再需要的变量或对象的引用,从而阻止它们被垃圾回收。 12345678910111213function createClosure() { const data = new Array(1000000).fill('大量数据'); return function () { console.log(data); };}const closureFunction = createClosure();// 使用闭包函数closureFunction();// 当不再需要闭包函数时,手动解除引用closureFunction = null; 事件监听器:...
陈Sir
励志成为一个顶级的程序员,喜欢编程、健身,一个热心且有趣的人!
文章
17
标签
14
分类
3
点击我!
公告
这是我做笔记的博客,不过只记录一些很基础的技术知识,欢迎大家一起交流!
目录
1.
浏览器基础知识要点
最新文章
Vue3基础知识
2025-03-22
HTML&&CSS基础知识要点
2025-03-01
HTML&&CSS性能优化
2025-03-01
JavaScript性能优化
2025-02-28
JavaScript进阶知识要点
2025-02-28