JavaScript的标识符解析性能

(条友们如果觉得我写的不错点击上面关注我一下吧,小编会有更加精彩的技术文章)

标识符(通常指命名)的解析是有代价的,实际上没有那种计算机操作可以不产生性能开销。在执行环境的作用域链(扯到作用域链就一定会扯到闭包问题,以后有空再仔细聊聊闭包)中,一个标识符所在的位置越深,它的读写速度也就越慢。也就是说函数中读写局部变量总是最快的,而读写全局变量总是最慢的。因为全局变量总是在执行环境作用域的末端。所以这就是我们常在某些书上或者老师给我们说尽量少使用全局变量的原因之一。

综上所述,在没有优化的JavaScript引擎的浏览器中,建议尽可能的少使用全局变量。这里有一个重要的原则:如果某个跨作用域的值(下面例子用document)在某个函数中被引用了二次或多次以上,那么就应该把它存储在局部变量之中。

考虑下面的例子:

clipboard.png

bad的例子

上面的函数引用了三次document,而document是个全局对象。搜索该对象的过程必须要遍历整个作用域链,直到最后在全局变量对象中找到。这样就产生了更大的性能开销。

下面看看这样重写的函数:

clipboard.png

Good的例子

Fun1函数首先将document对象的引用存储在局部变量doc中,这样就访问全局变量的次数就减少到了一次。由于doc是个局部变量,因此通过它访问document会更快。当然了,就这一个函数你也许感受不到性能上的提升。但可以想象一下一个大型项目中当有几十个或者上百个全部变量被反复访问的时候,那么性能上的提升一定是显著的。
本文由甲爪日付广告联盟(www.jiazhua.com)整理编辑!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值