高性能JavaScript学习笔记

加载和执行


1. script标签会阻塞文档解析和渲染,不会阻塞link标签连接的css文档的加载
2. link标签会阻塞在其之后的script标签执行,不阻塞DOM树解析,但阻塞渲染。
3. window.onload事件会在页面完全加载之后再执行,即使动态插入脚本,也会在动态脚本插入完成之后才执行onload事件。

数据存取


1. 访问速度最快的是字面量和局部变量,访问数组元素和对象成员比较慢;
2. 局部变量处于作用域链的最顶端,访问处于作用域越底部的变量速度越慢;
3. 可把常访问的处于作用域链低端或者嵌套比较深的变量存起来,加快访问速度。

DOM编程


1. 减少DOM访问次数,使用JavaScript对象存着;
2. 使用原生访问元素接口:querySelector和querySelectorAll;
3. 批量操作DOM,减少重排重绘,可脱离文档流处理;
4. 使用事件委托。

算法性能


1. 尽量不用for-in循环
2. 注意for,while,do-while循环优化,减少判断条件,可使用倒序,i--作为判断条件;
3. 判断条件多时使用查找表,其次switch比if-else快;
4. 减少迭代数和运算量,使用定时器分解大程序;
5. 预防递归函数栈溢出,改用迭代方法。
6. 减少相同的工作,例如函数总会执行相同的判断,并且判断可能的结果只有一个,那么使用延迟定义或者是预定义。

字符串和正则


1. +=性能比数组项合并达到拼接字符串的效果好,IE相反;
2. 勿重复使用未声明的正则对象字面,应该将正则对象字面量赋值给变量。

快速响应的用户界面


1. UI渲染和JavaScript引擎共用UI线程,将任务塞到任务队列;
2. 任何JavaScript任务不应该超过100毫秒,如果已经超过50毫秒可以将其放到下一个任务;
3. JavaScript在执行时可能不会将UI更新任务加到任务队列里面,导致UI没变化,但是却触发了绑定的事件;
4. Web Workers 新版浏览器才支持,建议用于执行与DOM无关的操作,例如解析大JSON对象;

Ajax


1. MXHR技术, 减少请求数,无法缓存;
2. JSON-P技术,跨域,无法使用post方法,无法获取头部信息,安全性不高;
3. 可用图片标签发送跨域少量数据,在不要求返回数据的情况下。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值