哪两个是最有效的方法呢?

时间:2013-09-05 22:36:53

标签: javascript performance

如果必须使用哪一个,我应该使用哪一个?

  • 使用方法1,我为每个可能的参数组合创建1个函数,但它很容易调用。
  • 使用方法2,我只有1个功能但是更难调用。

注意:在实际代码中,我没有在全局范围内创建所有内容,但想法仍然相同。

       //Method 1:
       for(var key = 0 ; key < 1000 ; key++){
            for(var i = 0 ; i < 1000 ; i++){
                window[key + ' ' + i] = (function(key, i) { return function() {  aFunction(key, i); } })(key, i)
            }
        }

        //then I simply do
        //window['223 111']();

        //Method 2:
        for(var key = 0 ; key < 1000 ; key++){
            for(var i = 0 ; i < 1000 ; i++){
                window[key + ' ' + i] = ['aFunction',key,i]
            }
        }
        //then i need to do 
        //window[window['223 111'][0]](window['223 111'][1],window['223 111'][2]);

1 个答案:

答案 0 :(得分:3)

除非您遇到实际的性能问题,否则请保持清晰和轻松。

我可能会用.bind()

替换您的第一个版本
for(var key = 0 ; key < 1000 ; key++){
    for(var i = 0 ; i < 1000 ; i++){
        window[key + ' ' + i] = aFunction.bind(window, key, i);
    }
}

在IE8及更低版本中不可用,但可以填充。


此外,您正在创建相当多的全局变量。我建议将它们全部放在命名空间对象中。

var NS = {}

for(var key = 0 ; key < 1000 ; key++){
    for(var i = 0 ; i < 1000 ; i++){
        NS[key + ' ' + i] = aFunction.bind(window, key, i);
    }
}

NS['223 111']();