巧用局部变量提升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 相关文章推荐
js和jquery批量绑定事件传参数一(新猪猪原创)
Jun 23 Javascript
js防止表单重复提交的两种方法
Sep 30 Javascript
location.href用法总结(最主要的)
Dec 27 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
Jan 17 Javascript
JS模态窗口返回值兼容问题的完美解决方法
May 28 Javascript
第五篇Bootstrap 排版
Jun 21 Javascript
微信小程序 textarea 组件详解及简单实例
Jan 10 Javascript
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
May 01 jQuery
vue中关闭eslint的方法分析
Aug 04 Javascript
微信小程序实现顶部导航特效
Jan 28 Javascript
vue 中 命名视图的用法实例详解
Aug 14 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
Sep 16 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/01/05 PHP
php通过文件流方式复制文件的方法
2015/03/13 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
mod_php、FastCGI、PHP-FPM等PHP运行方式对比
2015/07/02 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
2017/06/21 PHP
PHP 传输会话curl函数的实例详解
2017/09/12 PHP
详解PHP中的外观模式facade pattern
2018/02/05 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
打印json对象的内容及JSON.stringify函数应用
2013/03/29 Javascript
javascript自然分类法算法实现代码
2013/10/11 Javascript
JavaScript数组常用操作技巧汇总
2014/11/17 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
JavaScript跨域调用基于JSON的RESTful API
2016/07/09 Javascript
ajax+node+request爬取网络图片的实例(宅男福利)
2017/08/28 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
Node.js进阶之核心模块https入门
2018/05/23 Javascript
前端防止用户重复提交js实现代码示例
2018/09/07 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
Sublime Text3 配置 NodeJs 环境的方法
2020/05/20 NodeJs
python实现图片文件批量重命名
2020/03/23 Python
Python实现高斯函数的三维显示方法
2018/12/29 Python
解决pytorch 交叉熵损失输出为负数的问题
2020/07/07 Python
Django如何实现防止XSS攻击
2020/10/13 Python
解决python3.x安装numpy成功但import出错的问题
2020/11/17 Python
python利用后缀表达式实现计算器功能
2021/02/22 Python
W3C公布最新的HTML5标准草案
2008/10/17 HTML / CSS
美国知名生活购物网站:Goop
2017/11/03 全球购物
Linux内核产生并发的原因
2016/11/08 面试题
计算机毕业生自荐信范文
2014/03/23 职场文书
招标承诺书
2014/08/30 职场文书
怀孕辞职信怎么写
2015/02/28 职场文书
MySQL的安装与配置详细教程
2021/06/26 MySQL
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python
多人盗宝《绿林侠盗》第三赛季4.5上线 跨平台实装
2022/04/03 其他游戏
Win11应用商店打开闪退怎么解决? win11应用商店打不开的多种解决办法
2022/04/05 数码科技
云服务器部署 Web 项目的实现步骤
2022/06/28 Servers