第一章:加载和执行
1、把脚本放在页面底部。
2、减少外链请求,下载单个100kb的文件比下载4个25kb的文件速度更快,原因是建立http请求需要花费时间和性能开销(雅虎YUI interface libarary)线上合并文件
3、script标签defer属性,告诉浏览器此段js代码不会修改dom,可以延长加载,async和defer都是同步加载js标签
4、动态创建脚本,可以成为最通用的无加载解决方案
5、XMLHttpRequest脚本注入
5、github源码/rgrove/lazyload/, loadScript增强版本,,,还有LABjs
第二章:数据存取
1、尽量使用局部变量,减少全局变量的使用,假如某个全局变量访问超过一次以上 ,那就把它用局部变零存起来。
2、改变作用域链,with和catch语句,尽量减少使用。
第三章:DOM 编程
js和dom是独立的两座岛屿,想要简历连接,必须搭建一座桥,而这座桥又需要收费,导致操作dom的代价比较高。
减少dom的操作,尽量把运算放在js端。
老版浏览器innerHTML 比 document.createElement() 更快。新版后者快
批量修改样式比如cssText或者定义一个class,后者更好维护。
第四章:算法和流程控制
第五章:字符串和正则表达式
1、str+= "one" + "two"的性能低于 str = str + "one" + "two"
第六章: 快速响应的用户界面
1、使用定时器让出时间片段
2、web worker (单似乎这个东西没什么人用),实际应用场景是纯数据和ui界面无关。比如解析超级大的json:
第七章: ajax
1、get请求的数据会被缓存起来。
第八章:编程实践
1、避免双重求值,即不使用eval和Function,setTimeout和setInterval参数传入函数
2、使用Object/Array直接量