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学习阶段性总结(2)--(X)HTML学习
Feb 03 Javascript
建议大家看下JavaScript重要知识更新
Jul 08 Javascript
15 个 JavaScript Web UI 库
May 19 Javascript
json格式化/压缩工具 Chrome插件扩展版
May 25 Javascript
javascript中使用replaceAll()函数实现字符替换的方法
Dec 25 Javascript
关于jQuery的inArray 方法介绍
Oct 08 Javascript
jQuery.event兼容各浏览器的event详细解析
Dec 18 Javascript
JS中的异常处理方法分享
Dec 22 Javascript
详解Vue-cli中的静态资源管理(src/assets和static/的区别)
Jun 19 Javascript
详解angular部署到iis出现404解决方案
Aug 14 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
Sep 18 Javascript
使用Vue实现一个树组件的示例
Nov 06 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
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
PHP4 与 MySQL 数据库操作函数详解
2006/12/06 PHP
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
php实现源代码加密的方法
2015/07/11 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
2017/03/10 PHP
使弱类型的语言JavaScript变强势
2009/06/22 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
2015/11/16 Javascript
jquery validate表单验证的基本用法入门
2016/01/18 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
jquery插件bootstrapValidator数据验证详解
2016/11/09 Javascript
微信小程序 五星评价功能的实现
2017/03/09 Javascript
第一次记录Bootstrap table学习笔记(1)
2017/05/18 Javascript
bootstrap Table的一些小操作
2017/11/01 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
JavaScript实现计算多边形质心的方法示例
2018/01/31 Javascript
js传递数组参数到后台controller的方法
2018/03/29 Javascript
js实现动态添加上传文件页面
2018/10/22 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
js实现可爱的气泡特效
2020/09/05 Javascript
pandas每次多Sheet写入文件的方法
2018/12/10 Python
Python检测数据类型的方法总结
2019/05/20 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
使用CSS3美化HTML表单的技巧演示
2016/05/17 HTML / CSS
银行学习十八大感想
2014/01/11 职场文书
幼儿园教师获奖感言
2014/03/11 职场文书
反对邪教标语
2014/06/30 职场文书
医院护士工作检讨书
2014/10/26 职场文书
预备党员群众意见
2015/06/01 职场文书
亮剑观后感
2015/06/05 职场文书
重温入党誓词主持词
2015/06/29 职场文书
2016年区委书记抓基层党建工作公开承诺书
2016/03/25 职场文书
原生JS中应该禁止出现的写法
2021/05/05 Javascript
使用Oracle跟踪文件的问题详解
2021/06/28 Oracle
Nginx静态压缩和代码压缩提高访问速度详解
2022/05/30 Servers
Win11使用CAD卡顿或者致命错误怎么办?Win11无法正常使用CAD的解决方法
2022/07/23 数码科技