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 相关文章推荐
Ajax执行顺序流程及回调问题分析
Dec 10 Javascript
Javascript的表单验证-初识正则表达式
Mar 18 Javascript
JS常用算法实现代码
Nov 14 Javascript
jquery实现焦点轮播效果
Feb 23 Javascript
Bootstrap弹出框之自定义悬停框标题、内容和样式示例代码
Jul 11 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
Sep 19 jQuery
React Native中的RefreshContorl下拉刷新使用
Oct 09 Javascript
BootStrap TreeView使用实例详解
Nov 01 Javascript
jQuery zTree 异步加载添加子节点重复问题
Nov 29 jQuery
layui动态加载多表头的实例
Sep 05 Javascript
微信小程序制作扭蛋机代码实例
Sep 24 Javascript
原生js实现瀑布流效果
Mar 09 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
把77A收信机改造成收音机
2021/03/02 无线电
php查询whois信息的方法
2015/06/08 PHP
php检测图片主要颜色的方法
2015/07/01 PHP
PHP使用函数用法详解
2018/09/30 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
JQuery 写的个性导航菜单
2009/12/24 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
js 走马灯简单实例
2013/11/21 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
微信小程序 PHP生成带参数二维码
2017/02/21 Javascript
js实现简单的二级联动效果
2017/03/09 Javascript
vue中mint-ui环境搭建详细介绍
2017/04/06 Javascript
解决Vue页面固定滚动位置的处理办法
2017/07/13 Javascript
nodejs body-parser 解析post数据实例
2017/07/26 NodeJs
详解webpack 热更新优化
2018/09/13 Javascript
详解vuex之store拆分即多模块状态管理(modules)篇
2018/11/13 Javascript
vue中el-input绑定键盘按键(按键修饰符)
2020/07/22 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
[01:43]倾听DOTA2英雄之声 魅惑魔女国服配音鉴赏
2013/06/06 DOTA
pygame加载中文名mp3文件出现error
2017/03/31 Python
Python下实现的RSA加密/解密及签名/验证功能示例
2017/07/17 Python
在pytorch中查看可训练参数的例子
2019/08/18 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
Python通过yagmail实现发送邮件代码解析
2020/10/27 Python
皮尔·卡丹巴西官方商店:Pierre Cardin
2017/07/21 全球购物
联想英国官网:Lenovo英国
2019/07/17 全球购物
介绍一下代理模式(Proxy)
2014/10/17 面试题
公司会计岗位职责
2014/02/13 职场文书
教育技术职业规划范文
2014/03/04 职场文书
企业文化理念标语
2014/06/10 职场文书
节约用水的口号
2014/06/20 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
2014年预备党员群众路线教育实践活动对照检查材料思想汇报
2014/10/02 职场文书
和谐家庭事迹材料
2014/12/20 职场文书
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android
yolov5返回坐标的方法实例
2022/03/17 Python