js循环优化
2016-03-16 11:24
567 查看
for
do-while
while
for-in:枚举任何对象的命名属性,包括实例属性和原型链继承的属性,相对上面三个循环慢,若需迭代一个有限已知的属性列表,其他循环更快
循环需要注意影响性能的地方:
- 迭代次数
- 迭代处理
性能优化:
- 缓存数组长度
- 倒序循环,控制条件与0比较,相当于控制条件与true比较,非零数字自动强制转换为true
- 减少迭代次数,达夫设备,在一次迭代中执行多次迭代操作
js数组的forEach,遍历一个数组的所有成员,并在每个成员上执行一个函数,每个元素上执行的函数作为forEach的参数传入进去,因为每个数组要关联额外的函数调用,造成速度慢
do-while
while
for-in:枚举任何对象的命名属性,包括实例属性和原型链继承的属性,相对上面三个循环慢,若需迭代一个有限已知的属性列表,其他循环更快
循环需要注意影响性能的地方:
- 迭代次数
- 迭代处理
性能优化:
- 缓存数组长度
- 倒序循环,控制条件与0比较,相当于控制条件与true比较,非零数字自动强制转换为true
- 减少迭代次数,达夫设备,在一次迭代中执行多次迭代操作
var iterations = Math.floor(items.length / 8), startAt = items.length % 8, i = 0; do { switch(startAt){ case 0: process(items[i++]); case 7: process(items[i++]); case 6: process(items[i++]); case 5: process(items[i++]); case 4: process(items[i++]); case 3: process(items[i++]); case 2: process(items[i++]); case 1: process(items[i++]); } startAt = 0; } while (--iterations);
var i = items.length % 8; while(i){ process(items[i--]); } i = Math.floor(items.length / 8); while(i){ process(items[i--]); process(items[i--]); process(items[i--]); process(items[i--]); process(items[i--]); process(items[i--]); process(items[i--]); process(items[i--]); }
js数组的forEach,遍历一个数组的所有成员,并在每个成员上执行一个函数,每个元素上执行的函数作为forEach的参数传入进去,因为每个数组要关联额外的函数调用,造成速度慢
items.forEach(function(value, index, array){ process(value); });
相关文章推荐
- JavaScript进阶(九)JS实现本地文件上传至阿里云服务器
- JavaScript进阶(九)JS实现本地文件上传至阿里云服务器
- js获取span标签的值
- JS事件_动态添加
- ajax加载外部json并显示在页面
- Javascript的表单验证长度
- 星号代替数字 js语句
- javaScript事件
- json对象与字符串互转
- js日历
- Js Map
- jstack判断线程死锁命令
- js闭包的用处
- JavaScript进阶(七)JS截取字符串substr 和 substring方法的区别
- JavaScript进阶(七)JS截取字符串substr 和 substring方法的区别
- JavaScript事件机制详解
- 深入学习JavaScript(二)
- 百度地图js根据经纬度定位和拖动定位点
- js format 函数的实现
- js实现加减乘除