巧用局部变量提升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 DOM学习第六章 表单实例
Feb 19 Javascript
用显卡加速,轻松把笔记本打造成取暖器的办法!
Apr 17 Javascript
js判断子窗体是否关闭的方法
Aug 11 Javascript
jquery实现图片上传前本地预览功能
May 10 Javascript
使用JS实现图片展示瀑布流效果(简单实例)
Sep 06 Javascript
Node.js Express 框架 POST方法详解
Jan 23 Javascript
Linux使用Node.js建立访问静态网页的服务实例详解
Mar 21 Javascript
js获取一组日期中最近连续的天数
May 25 Javascript
前端主流框架vue学习笔记第二篇
Jul 26 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
Sep 19 Javascript
JavaScript模拟实现封装的三种方式及写法区别
Oct 27 Javascript
CountUp.js数字滚动插件使用方法详解
Oct 17 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数据库开发知多少
2006/10/09 PHP
PHP实现文件上传与下载实例与总结
2016/03/13 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
PHP实现基于3DES算法加密解密字符串示例
2018/08/24 PHP
分享2个jQuery插件--jquery.fileupload与artdialog
2014/12/26 Javascript
Javascript函数式编程简单介绍
2015/10/11 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
Vue.js原理分析之observer模块详解
2017/02/17 Javascript
Jquery-data的三种用法
2017/04/18 jQuery
Vue.js常用指令的使用小结
2017/06/23 Javascript
jQuery实现切换隐藏与显示同时切换图标功能
2017/10/29 jQuery
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
Angular8 简单表单验证的实现示例
2020/06/03 Javascript
11个Javascript小技巧帮你提升代码质量(小结)
2020/12/28 Javascript
Python读写文件方法总结
2015/06/09 Python
python的paramiko模块实现远程控制和传输示例
2017/10/13 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
2018/07/27 Python
PyQT5 QTableView显示绑定数据的实例详解
2019/06/25 Python
如何使用python进行pdf文件分割
2019/11/11 Python
jupyter notebook 增加kernel教程
2020/04/10 Python
浅谈Python中的生成器和迭代器
2020/06/19 Python
在 Python 中使用 7zip 备份文件的操作
2020/12/11 Python
基于 Python 实践感知器分类算法
2021/01/07 Python
德国汉莎航空中国官网: Lufthansa中国
2017/03/30 全球购物
德国汽车零件和汽车配件网上商店:kfzteile24
2018/11/14 全球购物
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
小区门卫工作职责
2013/12/14 职场文书
小学生爱国演讲稿
2014/04/25 职场文书
机械工程学院大学生求职信
2014/05/25 职场文书
与美同行演讲稿
2014/09/13 职场文书
资源环境与城乡规划管理专业自荐书
2014/09/26 职场文书
老公出轨后的保证书
2015/05/08 职场文书
技能培训通讯稿
2015/07/18 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
外出学习心得体会范文
2016/01/18 职场文书
导游词之大雁塔景区
2019/09/17 职场文书