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 相关文章推荐
JavaScript 事件对象的实现
Jul 13 Javascript
合并table相同单元格的jquery插件分享(很精简)
Jun 20 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
Dec 19 Javascript
JS动态调用方法名示例介绍
Dec 18 Javascript
使用jquery插件qrcode生成二维码
Oct 22 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
Dec 02 Javascript
APP中javascript+css3实现下拉刷新效果
Jan 27 Javascript
浅谈JS中的三种字符串连接方式及其性能比较
Sep 02 Javascript
Javascript 动态改变imput type属性
Nov 01 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
Dec 17 Javascript
Vue filter介绍及详细使用
Apr 04 Javascript
对vux点击事件的优化详解
Aug 28 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
php图片的裁剪与缩放生成符合需求的缩略图
2013/01/11 PHP
PHP生成随机用户名和密码的实现代码
2013/02/27 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
PHP使用mysqli操作MySQL数据库的简单方法
2017/02/04 PHP
Django中的cookie与session操作实例代码
2017/08/17 PHP
PHP执行系统命令函数实例讲解
2021/03/03 PHP
Firefox和IE浏览器兼容JS脚本写法小结
2008/07/07 Javascript
javascript转换日期字符串为Date日期对象的方法
2015/02/13 Javascript
每日十条JavaScript经验技巧(二)
2016/06/23 Javascript
JS中使用DOM来控制HTML元素
2016/07/31 Javascript
JS实现物体带缓冲的间歇运动效果示例
2016/12/22 Javascript
canvas实现环形进度条效果
2017/03/23 Javascript
node文件批量重命名的方法示例
2017/10/23 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
2018/03/21 Javascript
json字符串传到前台input的方法
2018/08/06 Javascript
vue axios数据请求及vue中使用axios的方法
2018/09/10 Javascript
vue-router 手势滑动触发返回功能
2018/09/30 Javascript
nodejs log4js 使用详解
2019/05/31 NodeJs
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
在Angular项目使用socket.io实现通信的方法
2021/01/05 Javascript
[50:22]完美盛典-2018年度红毯走秀
2018/12/16 DOTA
Python简单调用MySQL存储过程并获得返回值的方法
2015/07/20 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
2017/08/30 Python
Django+Xadmin构建项目的方法步骤
2019/03/06 Python
Python 占位符的使用方法详解
2019/07/10 Python
python实现最短路径的实例方法
2020/07/19 Python
Python pip使用超时问题解决方案
2020/08/03 Python
Python 字典一个键对应多个值的方法
2020/09/29 Python
Bealls Florida百货商店:生活服饰、家居装饰和鞋子
2018/02/23 全球购物
美发店5.1活动方案
2014/01/24 职场文书
应届毕业生如何写求职信
2014/02/16 职场文书
《藤野先生》教学反思
2014/02/19 职场文书
现场施工员岗位职责
2014/03/10 职场文书
求职意向书
2014/04/01 职场文书
幼儿园的门卫岗位职责
2014/04/10 职场文书
springboot中rabbitmq实现消息可靠性机制详解
2021/09/25 Java/Android