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 相关文章推荐
DOM相关内容速查手册
Feb 07 Javascript
javascript new 需不需要继续使用
Jul 02 Javascript
JS模拟的QQ面板上的多级可展开的菜单
Oct 10 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
Oct 24 Javascript
浅谈JavaScript事件的属性列表
Mar 01 Javascript
js同源策略详解
May 21 Javascript
js前端面试题及答案整理(一)
Aug 26 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
Apr 17 Javascript
Vue+axios实现统一接口管理的方法
Jul 23 Javascript
微信小程序有旋转动画效果的音乐组件实例代码
Aug 22 Javascript
JS实现的字符串数组去重功能小结
Jun 17 Javascript
Angular处理未可知异常错误的方法详解
Jan 17 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
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
PHP array_multisort() 函数的深入解析
2013/06/20 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
2014/05/15 PHP
PHP水印类,支持添加图片、文字、填充颜色区域的实现
2017/02/04 PHP
PHP实现计算器小功能
2020/08/28 PHP
javascript 对象的定义方法
2007/01/10 Javascript
js png图片(有含有透明)在IE6中为什么不透明了
2010/02/07 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
2012/11/08 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
纯JS打造网页中checkbox和radio的美化效果
2016/10/13 Javascript
探究Vue.js 2.0新增的虚拟DOM
2016/10/20 Javascript
js判断是否是手机页面
2017/03/17 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
2017/04/21 Javascript
详解Vue2.0 事件派发与接收
2017/09/05 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
[04:52]第二届DOTA2亚洲邀请赛主赛事第一天比赛集锦:OG娜迦海妖放大配合谜团大中3人
2017/04/02 DOTA
python Django模板的使用方法(图文)
2013/11/04 Python
python提示No module named images的解决方法
2014/09/29 Python
Python3多线程版TCP端口扫描器
2019/08/31 Python
Python Tornado批量上传图片并显示功能
2020/03/26 Python
Jupyter notebook快速入门教程(推荐)
2020/05/18 Python
Hotels.com香港酒店网:你的自由行酒店订房专家
2018/01/22 全球购物
会计工作心得体会
2014/01/13 职场文书
高中军训感想300字
2014/03/04 职场文书
合伙经营协议书
2014/04/18 职场文书
作风建设整改方案
2014/10/27 职场文书
党校个人总结
2015/03/04 职场文书
2015小学教师年度工作总结
2015/05/12 职场文书
电视新闻稿
2015/07/17 职场文书
员工担保书范本
2015/09/22 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
演讲稿之我的初心我的成长
2019/08/12 职场文书
Spring Boot DevTools 全局配置学习指南
2022/03/31 Java/Android
使用CSS实现黑白格背景效果
2022/06/01 HTML / CSS