巧用局部变量提升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 相关文章推荐
判断是否输入完毕再激活提交按钮
Jun 26 Javascript
让图片旋转任意角度及JQuery插件使用介绍
Mar 20 Javascript
javascript中的window.location.search方法简介
Sep 02 Javascript
JQuery实现可直接编辑的表格
Apr 16 Javascript
轻松掌握JavaScript代理模式
Aug 26 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
Nov 07 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
Aug 20 Javascript
centos 上快速搭建ghost博客方法分享
May 23 Javascript
JavaScript实现京东购物放大镜和选项卡效果的方法分析
Jul 05 Javascript
vue展示dicom文件医疗系统的实现代码
Aug 27 Javascript
JavaScript常见鼠标事件与用法分析
Jan 03 Javascript
vue 递归组件的简单使用示例
Jan 14 Vue.js
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
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
JAVA/JSP学习系列之七
2006/10/09 PHP
织梦模板标记简介
2007/03/11 PHP
深入php常用函数的使用汇总
2013/06/08 PHP
php分页示例分享
2014/04/30 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
php使用标签替换的方式生成静态页面
2015/05/21 PHP
php实现表单提交上传文件功能
2018/05/28 PHP
thinkphp3.2框架中where条件查询用法总结
2019/08/13 PHP
Laravel5.4框架中视图共享数据的方法详解
2019/09/05 PHP
javascript function、指针及内置对象
2009/02/19 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
2014/08/18 Javascript
取得元素的左和上偏移量的方法
2014/09/17 Javascript
js获取字符串最后一位方法汇总
2014/11/13 Javascript
jquery插件qrcode在线生成二维码
2015/04/26 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
简单谈谈ES6的六个小特性
2016/11/18 Javascript
简单实现bootstrap导航效果
2017/02/07 Javascript
JS数组操作中的经典算法实例讲解
2017/07/26 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
高效jQuery选择器的5个技巧实例分析
2019/11/26 jQuery
python实现simhash算法实例
2014/04/25 Python
使用Python简单的实现树莓派的WEB控制
2016/02/18 Python
浅谈python类属性的访问、设置和删除方法
2016/07/25 Python
Python创建对称矩阵的方法示例【基于numpy模块】
2017/10/12 Python
python IDLE添加行号显示教程
2020/04/25 Python
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
Python面试题:Python里面如何生成随机数
2015/03/12 面试题
四种会话跟踪技术
2015/05/20 面试题
历史学专业毕业生求职信
2013/09/27 职场文书
职称自我鉴定
2013/10/15 职场文书
QQ空间主人寄语大全
2014/04/12 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
建立共青团委员会的请示
2019/04/02 职场文书
2020优秀员工演讲稿(三篇)
2019/10/17 职场文书
解决linux下redis数据库overcommit_memory问题
2022/02/24 Redis