巧用局部变量提升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----文件操作
Jan 18 Javascript
解决 firefox 不支持 document.all的方法
Mar 12 Javascript
js 编程笔记 无名函数
Jun 28 Javascript
图片在浏览器中底部对齐 解决方法之一
Nov 30 Javascript
jquery插件推荐 jquery.cookie
Nov 09 Javascript
js实现touch移动触屏滑动事件
Apr 17 Javascript
js实现简单的省市县三级联动效果实例
Feb 18 Javascript
使用Promise解决多层异步调用的简单学习心得
May 17 Javascript
用JS实现轮播图效果(二)
Jun 26 Javascript
JavaScript中的冒泡排序法
Aug 03 Javascript
js实现拖拽与碰撞检测
Sep 18 Javascript
vue使用exif获取图片旋转,压缩的示例代码
Dec 11 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
php 信息采集程序代码
2009/03/17 PHP
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
php制作文本式留言板
2015/03/18 PHP
php+ajax简单实现全选删除的方法
2016/12/06 PHP
详解php中生成标准uuid(guid)的方法
2019/04/28 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
javaScript checkbox 全选/反选及批量删除
2010/04/28 Javascript
js中function()使用方法
2013/12/24 Javascript
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
Uploadify上传文件方法
2016/03/16 Javascript
js两种拼接字符串的简单方法(必看)
2016/09/02 Javascript
AngularJS ui-router (嵌套路由)实例
2017/03/10 Javascript
js实现从左向右滑动式轮播图效果
2017/07/07 Javascript
javascript 日期相减-在线教程(附代码)
2017/08/17 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
2018/11/30 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
vue实现移动端input上传视频、音频
2020/08/18 Javascript
[01:55]2014DOTA2国际邀请赛快报:国土生病 紧急去医院治疗
2014/07/10 DOTA
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
Tensorflow的可视化工具Tensorboard的初步使用详解
2018/02/11 Python
Python3.5装饰器原理及应用实例详解
2019/04/30 Python
用OpenCV进行年龄和性别检测的实现示例
2021/01/29 Python
Grid 宫格常用布局的实现
2020/01/10 HTML / CSS
巧用 CSS3的webkit-box-reflect 倒影实现各类动效
2021/03/05 HTML / CSS
非洲NO.1网上商店:Jumia肯尼亚
2016/08/18 全球购物
英国布鲁姆精品店:Bloom Boutique
2018/03/01 全球购物
Java中的异常处理机制的简单原理和应用
2013/04/27 面试题
八年级英语教学反思
2014/01/09 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2014年领班工作总结
2014/11/25 职场文书
导师对论文的学术评语
2015/01/04 职场文书
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL
Nginx+Windows搭建域名访问环境的操作方法
2022/03/17 Servers
Python基本知识点总结
2022/04/07 Python