巧用局部变量提升javascript性能


Posted in Javascript onFebruary 24, 2014

javascript中一个标识符所在的位置越深,它的读写速度也越慢。因此,函数中读写局部变量总是最快的,而读写全局变量通常是最慢的。一个好的经验法则是:如果某个跨作用域的值在函数中被引用一次以上,那么就把它存储到局部变量里。

例如:

<!-- 优化前 --> 
<script type="text/javascript"> 
function initUI () { 
var bd = document.body, 
links = document.getElementByTagName("a"), 
i=0, 
len=links.length; 
while(i < len){ 
update(links[i++]); 
} document.getElementById("go-btn").onclick = function(){ 
start(); 
} 
bd.className = "active"; 
} 
</script>

该函数引用了三次document,而document是个全局对象。搜索该变量的过程必须遍历整个作用域链接,直到最后在全局变量对象中找到。你可以通过以下方法减少对性能的影响:先将全局变量的引用存储在一个局部变量中,然后使用这个局部变量代替全局变量。

例如:

<!-- 优化后 --> 
<script type="text/javascript"> 
function initUI () { 
var doc=document, 
bd = doc.body, 
links = doc.getElementByTagName("a"), 
i=0, 
len=links.length; 
while(i < len){ 
update(links[i++]); 
} doc.getElementById("go-btn").onclick = function(){ 
start(); 
} 
bd.className = "active"; 
} 
</script>
Javascript 相关文章推荐
JavaScript 闭包在封装函数时的简单分析
Nov 28 Javascript
jquery ajax 简单范例(界面+后台)
Nov 19 Javascript
图解Sublime Text3使用技巧
Dec 21 Javascript
JavaScript事件学习小结(一)事件流
Jun 09 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
Jan 13 Javascript
bootstrap 设置checkbox部分选中效果
Apr 20 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
Dec 08 Javascript
Angular 项目实现国际化的方法
Jan 08 Javascript
javascript少儿编程关于返回值的函数内容
May 27 Javascript
详解Vue微信授权登录前后端分离较为优雅的解决方案
Jun 29 Javascript
微信小程序实现指定显示行数多余文字去掉用省略号代替
Jul 25 Javascript
小程序server请求微信服务器超时的解决方法
May 21 Javascript
javascript中的原型链深入理解
Feb 24 #Javascript
JSONP获取Twitter和Facebook文章数的具体步骤
Feb 24 #Javascript
动态加载js、css等文件跨iframe实现
Feb 24 #Javascript
js操纵dom生成下拉列表框的方法
Feb 24 #Javascript
js设置function参数默认值(适合没有传参情况)
Feb 24 #Javascript
JS取request值以及自动执行使用示例
Feb 24 #Javascript
减少访问DOM的次数提升javascript性能
Feb 24 #Javascript
You might like
php 过滤器实现代码
2010/08/09 PHP
Function eregi is deprecated (解决方法)
2013/06/21 PHP
php 实现进制相互转换
2016/04/07 PHP
PHP插件PHPMailer发送邮件功能
2017/02/28 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
AJAX的使用方法详解
2017/04/29 PHP
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
自己编写的类似JS的trim方法
2013/10/09 Javascript
javascript判断数组内是否重复的方法
2015/04/21 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
js运动应用实例解析
2015/12/28 Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
2016/09/01 Javascript
微信小程序 开发工具快捷键整理
2016/10/31 Javascript
BootStrap3使用错误记录及解决办法
2016/12/22 Javascript
AngularJS 文件上传控件 ng-file-upload详解
2017/01/13 Javascript
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
浅谈React Event实现原理
2018/09/20 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
跟老齐学Python之??碌某?? target=
2014/09/12 Python
django反向解析URL和URL命名空间的方法
2018/06/05 Python
使用Python实现在Windows下安装Django
2018/10/17 Python
对Python中内置异常层次结构详解
2018/10/18 Python
python3 打开外部程序及关闭的示例
2018/11/06 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
2018/11/07 Python
Python进程间通信Queue消息队列用法分析
2019/05/22 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
个人自我鉴定范文
2013/10/04 职场文书
酒店led欢迎词
2014/01/09 职场文书
文秘人员工作职责
2014/01/31 职场文书
体育课课后反思
2014/04/24 职场文书
服务标语大全
2014/06/18 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
Django实现翻页的示例代码
2021/05/24 Python
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL