js函数的引用, 关于内存的开销


Posted in Javascript onSeptember 17, 2012

请看如下代码:

var arr = []; 
var cc = function(){alert('xx');}; 
for(var i = 0; i<2; i++){ 
arr[i] = function(){alert('yy');} 
arr[i+10] = cc; 
} 
console.group('开始') 
console.group('1') 
console.info( arr[0] == arr[1]); 
console.info( arr[0] === arr[1]); 
console.info( arr[0].toString()); 
console.info( arr[1].toString()); 
console.groupEnd('1') 

console.group('2') 
console.info( arr[10] == arr[11]); 
console.info( arr[10] === arr[11]); 
console.info( arr[10].toString()); 
console.info( arr[11].toString()); 
console.group() 
console.groupEnd('开始');

在火狐的firebug中的控制台运行结果如下图:

js函数的引用, 关于内存的开销

分析:

第五行代码的循环开始,循环结束后 arr数组得到的结果为:
arr[0] = function(){ alert('yy'); }
arr[1] = function(){ alert('yy'); }
arr[10] = cc
arr[11] = cc
可以看出来, 控制台进行结果,上图。
arr[0] 不等于 arr[1]
但是 arr[10] 等于 arr[11] , 因为它引用了前面定义的变量。
其实在循环的过程中都在重新定义函数function(){alert('yy');}
arr[0] 和 arr[1]的toString 输出的内容是相同的。 但是两个是独立的方法, 占用各自的内存,所以为了省内存, 可以用于把函数定义在循环外。
函数定义在循环外面的前提条件是,函数没有接受在循环内变化的变量。

Javascript 相关文章推荐
转自Jquery官方 jQuery1.1.3发布,速度提升800%,体积保持20K
Aug 19 Javascript
jQuery 使用手册(四)
Sep 23 Javascript
子窗口、父窗口和Silverlight之间的相互调用
Aug 16 Javascript
基于JQuery的6个Tab选项卡插件
Sep 03 Javascript
jquery写个checkbox——类似邮箱全选功能
Mar 19 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
Aug 16 Javascript
jQuery的事件委托实例分析
Jul 15 Javascript
JS中的forEach、$.each、map方法推荐
Apr 05 Javascript
AngulerJS学习之按需动态加载文件
Feb 13 Javascript
Vue 理解之白话 getter/setter详解
Apr 16 Javascript
javscript 数组扁平化的实现
Feb 03 Javascript
详解JavaScript 的执行机制
Sep 18 Javascript
JavaScript中的稀疏数组与密集数组[译]
Sep 17 #Javascript
JavaScript中:表达式和语句的区别[译]
Sep 17 #Javascript
JavaScript取得鼠标绝对位置程序代码介绍
Sep 16 #Javascript
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
Sep 14 #Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
Sep 14 #Javascript
javascript时区函数介绍
Sep 14 #Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
Sep 14 #Javascript
You might like
与空气斗智斗勇的经典《Overlord》,传说中的“无稽之谈”
2020/04/09 日漫
Content-type 的说明
2006/10/09 PHP
让PHP显示Facebook的粉丝数量方法
2014/01/08 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
2014/08/19 PHP
PHP中使用array函数新建一个数组
2015/11/19 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
js 实现 input type=&quot;file&quot; 文件上传示例代码
2013/08/07 Javascript
Jquery操作cookie记住用户名
2016/03/29 Javascript
jQuery实现QQ空间汉字转拼音功能示例
2017/07/10 jQuery
微信小程序录音与播放录音功能
2017/12/25 Javascript
微信小程序手机号码验证功能的实例代码
2018/08/28 Javascript
vue 弹框产生的滚动穿透问题的解决
2018/09/21 Javascript
JS实现二维数组元素的排列组合运算简单示例
2019/01/28 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
2019/04/11 Javascript
ES6 Promise对象的应用实例分析
2019/06/27 Javascript
Node.JS获取GET,POST数据之queryString模块使用方法详解
2020/02/06 Javascript
javascrpt密码强度校验函数详解
2020/03/18 Javascript
基于JavaScript实现控制下拉列表
2020/05/08 Javascript
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python通过文件头判断文件类型
2015/10/30 Python
selenium+python截图不成功的解决方法
2019/01/30 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
2019/12/13 Python
Matplotlib绘制雷达图和三维图的示例代码
2020/01/07 Python
Python docutils文档编译过程方法解析
2020/06/23 Python
python定义具名元组实例操作
2021/02/28 Python
HTML5添加禁止缩放功能
2017/11/03 HTML / CSS
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
秘书专业自荐信范文
2013/12/26 职场文书
金融管理毕业生求职信
2014/03/03 职场文书
德语专业求职信
2014/03/12 职场文书
党建目标管理责任书
2014/07/25 职场文书
工商局领导班子存在的问题整改措施思想汇报
2014/10/05 职场文书
催款函范文
2015/06/24 职场文书
关爱留守儿童主题班会
2015/08/13 职场文书