1、注意作用域
在一个函数中将多次用到的全局变量保存为局部变量。
2、避免使用with语句
3、访问数组比访问对象快,减少查找对象属性的次数。如果可以用数字位置和命名属性访问,那么用数字。例如:
var img = document.getElementsByTagName("img");
img[0] //使用这种方式访问第一个img
4、避免显示或者隐示的调用eval,比如说直接用eval或者在setTimeout中传入字符串
5、使用原生的方法,比如求一个数的平方,那么用Math对象提供的方法更快。
6、switch比复杂的if-else要快,而且switch按照最可能和最不可能的顺序排列可以进一步优化switch
7、使用单个的var来声明所有变量可以加快速度。
8、var name = values[i]; i++; 可以优化成 var name = values[i++];
9、最大程度减少对DOM的操作。比如要插入很多条列表,可以先在js中拼装好,然后插入一次。使用innerHTML比appendChild要快。
10、使用事件委托。
11、减少对NodeList对象的访问,因为每次访问都会实时查询。这里面可以引申出缓存jquery对象。例如
var images = document.getElementsByTagName("img");
for(var i = 0, len = images.length; i < len ; i++){}
这里使用len保存images.length,就避免了每次判断的时候访问images的length属性。
然后这里使用了images保存document.getElementsByTagName("img");也避免了之后每次的查找。
三、部署
1、构建过程
开发时把js分成多个文件,以提高维护性。发布时通过构建工具,合并代码。
2、验证
构建工具中可以加入验证工具,如jslint
3、压缩
3.1 文件压缩(减少代码长度)
一般有这些操作,删除空白、删除注释、缩短变量名
3.2 HTTP压缩(减少传送字节数)
一般通过设置web服务器用gzip压缩。所有浏览器都可以解压gizp的。