1
使用 var 定义局部变量
2
尽可能缓存变量,查询结果,DOM元素
3
缓存函数值
4
避免使用 with
5
使用 Array 拼接字符串
6
节制eval的使用
7
转换较大的switch为查询
8
不要使用 setter/getter 方法,直接使用变量
9
尽量避免使用闭包
10
使用 document.createDocumentFragment() 创建 DOM
11
使用 cloneNode 代替 createElement
12
使用一次innerHTML赋值代替构建dom元素
13
使用firstChild和nextSibling代替childNodes遍历dom元素
14
顺序无关的遍历时,用while替代for
15
IE, switch分支选择的效率高于if,在IE下尤为明显。4分支的测试,IE下switch的执行时间约为if的一半。
16
setInterval 替换 setTimeout
17
eval、Function、execScript等语句会再次使用javascript解析引擎进行解析,需要消耗大量的执行时间
18
巧用||和&&布尔运算符
前:
function eventHandler (e) {
if(!e) e = window.event;
}
后:
function eventHandler (e) {
e = e || window.event;
}
前:
if (myobj) {
doSomething(myobj);
}
后:
myobj && doSomething(myobj);
19
使用数组的splice方法释放数组中不用的item
20
释放dom元素占用的内存
将dom元素的innerHTML设置为空字符串,可以释放其子元素占用的内存。
21
释放javascript对象
对象:obj = null
对象属性:delete obj.myproperty
数组item:使用数组的splice方法释放数组中不用的item
22
尽量减少样式
23
简化选择器 ID 选择器 > class
24
尽量减少页面重新布局
25
使用本地JSON对象
26
在整个拖动过程中,浏览器要不断重新宣染容器及其内部所有结点的相关属性,任务量大,触发又很频繁,CPU占用就会很高。改进这样的拖动效果,可以改成:按下鼠标时,是拖动一个独立的空DIV,松开鼠标时再把真正要移动的窗口重新定位到目标位置就行。这样在拖动过程中,浏览器只需要宣染一个div
27
页面DOM元素过多,会导致浏览器JS运行和DOM渲染效率降低
28
类型转换
把数字转换成字符串,应用”" + 1
浮点数转换成整型,这个更容易出错,很多人喜欢使用parseInt(),其实parseInt()是用于将字符串转换成数字,而不是浮点数和整型之间的转换,我们应该使用Math.floor()或者Math.round()。
对于自定义的对象,如果定义了toString()方法来进行类型转换的话,推荐显式调用toString(),因为内部的操作在尝试所有可能性之后,会尝试对象的toString()方法尝试能否转化为String,所以直接调用这个方法效率会更高
29
使用直接量
30
对字符串进行循环操作,譬如替换、查找,应使用正则表达式,因为本身JavaScript的循环速度就比较慢,而正则表达式的操作是用C写成的语言的API,性能很好
31
对象查询
使用[""]查询要比.items()更快
32
对动态生成的元素进行缓存,一方面可以减少与服务器的交互及负载,同时也能够提升页面执行效率,缓存当善用之。
33
用 class 替代 style
34
动态创建 script 标签
使用 var 定义局部变量
2
尽可能缓存变量,查询结果,DOM元素
3
缓存函数值
4
避免使用 with
5
使用 Array 拼接字符串
6
节制eval的使用
7
转换较大的switch为查询
8
不要使用 setter/getter 方法,直接使用变量
9
尽量避免使用闭包
10
使用 document.createDocumentFragment() 创建 DOM
11
使用 cloneNode 代替 createElement
12
使用一次innerHTML赋值代替构建dom元素
13
使用firstChild和nextSibling代替childNodes遍历dom元素
14
顺序无关的遍历时,用while替代for
15
IE, switch分支选择的效率高于if,在IE下尤为明显。4分支的测试,IE下switch的执行时间约为if的一半。
16
setInterval 替换 setTimeout
17
eval、Function、execScript等语句会再次使用javascript解析引擎进行解析,需要消耗大量的执行时间
18
巧用||和&&布尔运算符
前:
function eventHandler (e) {
if(!e) e = window.event;
}
后:
function eventHandler (e) {
e = e || window.event;
}
前:
if (myobj) {
doSomething(myobj);
}
后:
myobj && doSomething(myobj);
19
使用数组的splice方法释放数组中不用的item
20
释放dom元素占用的内存
将dom元素的innerHTML设置为空字符串,可以释放其子元素占用的内存。
21
释放javascript对象
对象:obj = null
对象属性:delete obj.myproperty
数组item:使用数组的splice方法释放数组中不用的item
22
尽量减少样式
23
简化选择器 ID 选择器 > class
24
尽量减少页面重新布局
25
使用本地JSON对象
26
在整个拖动过程中,浏览器要不断重新宣染容器及其内部所有结点的相关属性,任务量大,触发又很频繁,CPU占用就会很高。改进这样的拖动效果,可以改成:按下鼠标时,是拖动一个独立的空DIV,松开鼠标时再把真正要移动的窗口重新定位到目标位置就行。这样在拖动过程中,浏览器只需要宣染一个div
27
页面DOM元素过多,会导致浏览器JS运行和DOM渲染效率降低
28
类型转换
把数字转换成字符串,应用”" + 1
浮点数转换成整型,这个更容易出错,很多人喜欢使用parseInt(),其实parseInt()是用于将字符串转换成数字,而不是浮点数和整型之间的转换,我们应该使用Math.floor()或者Math.round()。
对于自定义的对象,如果定义了toString()方法来进行类型转换的话,推荐显式调用toString(),因为内部的操作在尝试所有可能性之后,会尝试对象的toString()方法尝试能否转化为String,所以直接调用这个方法效率会更高
29
使用直接量
30
对字符串进行循环操作,譬如替换、查找,应使用正则表达式,因为本身JavaScript的循环速度就比较慢,而正则表达式的操作是用C写成的语言的API,性能很好
31
对象查询
使用[""]查询要比.items()更快
32
对动态生成的元素进行缓存,一方面可以减少与服务器的交互及负载,同时也能够提升页面执行效率,缓存当善用之。
33
用 class 替代 style
34
动态创建 script 标签