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 相关文章推荐
15 个 JavaScript Web UI 库
May 19 Javascript
基于JQuery的简单实现折叠菜单代码
Sep 15 Javascript
jQuery实现公告文字左右滚动的实例代码
Oct 29 Javascript
jQuery实现带滚动线条导航效果的方法
Jan 30 Javascript
AngularJS的表单使用详解
Jun 17 Javascript
Vue实现百度下拉提示搜索功能
Jun 21 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
Sep 13 Javascript
JavaScript数据结构之单链表和循环链表
Nov 28 Javascript
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
Jun 14 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
Jan 10 Javascript
使用watch在微信小程序中实现全局状态共享
Jun 03 Javascript
Vue vee-validate插件的简单使用
Jun 22 Vue.js
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/06/03 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
php用xpath解析html的代码实例讲解
2019/02/14 PHP
js 居中漂浮广告
2010/03/21 Javascript
jQuery 动画弹出窗体支持多种展现方式
2010/04/29 Javascript
让innerText在firefox火狐和IE浏览器都能用的写法
2011/05/14 Javascript
轻松创建nodejs服务器(10):处理上传图片
2014/12/18 NodeJs
零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
2014/12/20 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
2015/02/25 Javascript
JS实现的自定义右键菜单实例二则
2015/09/01 Javascript
跟我学习javascript的隐式强制转换
2015/11/16 Javascript
JavaScript对象数组排序实例方法浅析
2016/06/15 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
2016/12/28 Javascript
jquery中关于bind()方法的使用技巧分享
2017/03/30 jQuery
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
Vue循环组件加validate多表单验证的实例
2018/09/18 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
Vue 路由间跳转和新开窗口的方式(query、params)
2019/12/25 Javascript
jquery绑定事件 bind和on的用法与区别分析
2020/05/22 jQuery
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
详解python itertools功能
2020/02/07 Python
全网最全python库selenium自动化使用详细教程
2021/01/12 Python
CSS类名支持中文命名的示例
2014/04/04 HTML / CSS
CSS3感应鼠标的背景闪烁和图片缩放动画效果
2014/05/14 HTML / CSS
详解CSS3 Media Queries中媒体属性的使用
2016/02/29 HTML / CSS
捷克原创男装和女装购物网站:Bolf.cz
2018/04/28 全球购物
俄罗斯设计师家具购物网站:The Furnish
2019/12/01 全球购物
入党积极分子介绍信
2014/01/17 职场文书
老干部工作先进集体事迹材料
2014/05/21 职场文书
音乐之声音乐广播稿
2014/09/10 职场文书
民政工作个人总结
2015/02/28 职场文书
2015年试用期自我评价范文
2015/03/10 职场文书
跑吧孩子观后感
2015/06/10 职场文书
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android