提高JavaScript程序性能的方法

  1. 编写带有记忆功能的函数
    //函数memoize()需要传人一个函数作为输入参数,返回相同的函数但增加了储存功能
    function memoize(fn){
    return function(){
    var propertyName;
    fn.storage = fn.storage || {};//如果这个函数还没有记忆的对象属性,就添加一个
    propertyName = Array.prototype.join.call(arguments, "|");//为了保证属性名唯一性,基于参数组合命名
    if(propertyName in fn.storage){ //判断该键是否在记忆对象中
    return fn.storage[propertyName];//有就直接取出,避免再次执行函数
    }else{
    return fn.storage[propertyName] = fn.apply(this, arguments);//不存在,就把函数执行结果保存在记忆对象
    }
    }
    };
    //test函数
    function getFactorial(num){
    var result = 1,
    index = 1;
    for(; index <= num; index++){
    result *= index;
    }
    return result;
    }
    var getFactorialMemoized = memoize(getFactorial);
    alert(getFactorialMemoized(50));//执行整个函数
    alert(getFactorialMemoized(50));//返回保存的值,避免了执行整个函数,增强了性能。
    2 . 使用for的小技巧
    var myArray = [10,30,24,2,45,67];
    for (var index = 0,length = myArray.length; index < length; index++){
    //只计算一次的得出myArray.length的值,并保存在一个变量之中,在每一次迭代中,可直接取变量值,无需重新计算
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,827评论 2 17
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 2,097评论 1 10
  • Javascript有很多数组的方法,有的人有W3C的API,还可以去MDN上去找,但是我觉得API上说的不全,M...
    顽皮的雪狐七七阅读 4,203评论 0 6
  • 第一章: JS简介 从当初简单的语言,变成了现在能够处理复杂计算和交互,拥有闭包、匿名函数, 甚至元编程等...
    LaBaby_阅读 1,697评论 0 6
  • FreeCodeCamp - Basic JavaScript 写在前面: 我曾经在进谷前刷过这一套题,不过当时只...
    付林恒阅读 16,521评论 5 28