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 相关文章推荐
一直复略了的一个问题,关于表单重复提交
Feb 15 Javascript
js实现DIV的一些简单控制
Jun 04 Javascript
firefox中用javascript实现鼠标位置的定位
Jun 17 Javascript
js AspxButton的客户端操作
Jun 26 Javascript
javascript 三种编解码方式
Feb 01 Javascript
jquery绑定原理 简单解析与实现代码分享
Sep 06 Javascript
很好用的js日历算法详细代码
Mar 07 Javascript
JS实现向iframe中表单传值的方法
Mar 24 Javascript
详解angular脏检查原理及伪代码实现
Jun 08 Javascript
vuex actions传递多参数的处理方法
Sep 18 Javascript
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
Feb 14 jQuery
vue 接口请求地址前缀本地开发和线上开发设置方式
Aug 13 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
基于PHP对XML的操作详解
2013/06/07 PHP
div li的多行多列 无刷新分页示例代码
2013/10/16 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
PHP正则判断一个变量是否为正整数的方法
2019/02/27 PHP
ThinkPHP中图片按比例切割的代码实例
2019/03/08 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
js 新浪的一个图片播放图片轮换效果代码
2008/07/15 Javascript
firefo xml 读写实现js代码
2009/06/11 Javascript
jQuery中:selected选择器用法实例
2015/01/04 Javascript
JavaScript实现自动变换表格边框颜色
2015/05/08 Javascript
JavaScript保存并运算页面中数字类型变量的写法
2015/07/06 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
2016/05/12 Javascript
JS实现简易刻度时钟示例代码
2017/03/11 Javascript
jQuery动画_动力节点节点Java学院整理
2017/07/04 jQuery
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
解决vue+ element ui 表单验证有值但验证失败问题
2020/01/16 Javascript
微信小程序用canvas画图并分享
2020/03/09 Javascript
vue+Element中table表格实现可编辑(select下拉框)
2020/05/21 Javascript
vue swipeCell滑动单元格(仿微信)的实现示例
2020/09/14 Javascript
详解阿里Node.js技术文档之process模块学习指南
2021/01/04 Javascript
[01:24:09]Ti4 冒泡赛第二轮DK vs C9 1
2014/07/14 DOTA
Python使用os模块和fileinput模块来操作文件目录
2016/01/19 Python
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
基于python3 类的属性、方法、封装、继承实例讲解
2017/09/19 Python
Python面向对象编程基础解析(二)
2017/10/26 Python
解决Ubuntu pip 安装 mysql-python包出错的问题
2018/06/11 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
2018/06/22 Python
CSS3条纹背景制作的实战攻略
2016/05/31 HTML / CSS
CK澳大利亚官网:Calvin Klein澳大利亚
2020/12/12 全球购物
2014学校庆三八妇女节活动总结
2014/03/01 职场文书
高中生职业规划范文
2014/03/09 职场文书
村主任群众路线个人对照检查材料
2014/09/26 职场文书
教师个人培训总结
2015/02/11 职场文书
公司员工违纪检讨书
2015/05/05 职场文书