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 相关文章推荐
IE8对JS通过属性和数组遍历解析不一样的地方探讨
May 06 Javascript
Javascript变量作用域详解
Dec 06 Javascript
深入探秘jquery瀑布流的实现
Jan 30 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
Jun 05 Javascript
jquery easyUI中ajax异步校验用户名
Aug 19 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
Oct 05 Javascript
JS实现针对给定时间的倒计时功能示例
Apr 11 Javascript
使用node搭建自动发图文微博机器人的方法
Mar 22 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
Jul 19 Javascript
vue  elementUI 表单嵌套验证的实例代码
Nov 06 Javascript
使用vuex较为优雅的实现一个购物车功能的示例代码
Dec 09 Javascript
Vant+postcss-pxtorem 实现浏览器适配功能
Feb 05 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
英雄试炼之肉山谷—引领RPG新潮流
2020/04/20 DOTA
Discuz 6.0+ 批量注册用户名
2009/09/13 PHP
浅析ThinkPHP中execute和query方法的区别
2014/06/13 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
PHP加密解密类实例代码
2016/07/20 PHP
Javascript load Page,load css,load js实现代码
2010/03/31 Javascript
不同的jQuery API来处理不同的浏览器事件
2012/12/09 Javascript
js关闭当前页面(窗口)的几种方式总结
2013/03/05 Javascript
JavaScript获取网页中第一个图片id的方法
2015/04/03 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
javascript中使用正则表达式清理table样式的代码
2020/04/01 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
VUE页面中加载外部HTML的示例代码
2017/09/20 Javascript
微信小程序实现自定义picker选择器弹窗内容
2020/05/26 Javascript
深入理解 Koa 框架中间件原理
2018/10/18 Javascript
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
2013/12/08 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
Python去除字符串前后空格的几种方法
2019/03/04 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
adidas菲律宾官网:adidas PH
2020/02/07 全球购物
英文简历中的自荐信范文
2013/12/14 职场文书
幼儿园消防安全制度
2014/01/26 职场文书
简历中的自我评价怎么写
2014/01/29 职场文书
自我鉴定标准格式
2014/03/19 职场文书
大学生就业意向书范文
2014/04/01 职场文书
詹天佑教学反思
2014/04/30 职场文书
省级青年文明号申报材料
2014/05/23 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
企业群众路线教育实践活动心得体会
2014/11/03 职场文书
万能检讨书
2015/01/27 职场文书
天坛导游词
2015/02/02 职场文书
SpringBoot 拦截器妙用你真的了解吗
2021/07/01 Java/Android
JVM之方法返回地址详解
2022/02/28 Java/Android