您的位置:首页 > Web前端 > JavaScript

如何优化js代码(4)――减少作用域链上的查找次数

2013-06-14 15:06 411 查看
4、减少作用域链上的查找次数
我们知道,js代码在执行的时候,如果需要访问一个变量或者一个函数的时候,它需要遍历当前执行环境的作用域链,而遍历是从这个作用域链的前端一级一级的向后遍历,直到全局执行环境,所以这里往往会出现一个情况,那就是如果我们需要经常访问全局环境的变量对象的时候,我们每次都必须在当前作用域链上一级一级的遍历,这显然是比较耗时的,我们看下面的例子:?
?
上面代码中,第二种情况是先把全局对象的变量放到函数里面先保存下来,然后直接访问这个变量,而第一种情况是每次都遍历作用域链,直到全局环境,我们看到第二种情况实际上只遍历了一次,而第一种情况却是每次都遍历了,所以我们看看其执行结果:
IE6.0
函数第1次第2次第3次第4次第5次平均
func11627ms1627ms1642ms1627ms1626ms1629.8ms
func2985ms1002ms1001ms985ms985ms991.6ms
Firefox4.0
函数第1次第2次第3次第4次第5次平均
func172ms71ms72ms72ms82ms73.8ms
func272ms71ms73ms83ms70ms73.8ms
Chrome6.0
函数第1次第2次第3次第4次第5次平均
func162ms71ms63ms78ms78ms70.4ms
func278ms62ms62ms71ms62ms67ms
从上表中可以看出,其在IE6下差别还是非常明显的,而且这种差别在多级作用域链和多个全局变量的情况下还会表现的非常明显。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: