提高JavaScript程序性能的方法

2017-07-13  本文已影响20人  sdcV
  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的值,并保存在一个变量之中,在每一次迭代中,可直接取变量值,无需重新计算
    }
上一篇下一篇

猜你喜欢

热点阅读