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 获取链接(url)参数的方法[正则与截取字符串]
Feb 09 Javascript
jQuery制作仿腾讯web qq用户体验桌面
Aug 20 Javascript
js 获取元素下面所有li的两种方法
Apr 14 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
Jul 30 Javascript
基于jQuery实现文本框缩放以及上下移动功能
Nov 24 Javascript
JavaScript检测实例属性, 原型属性
Feb 04 Javascript
JavaScript中诡异的delete操作符
Mar 12 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
Sep 08 Javascript
详解Javascript获取缓存和清除缓存API
May 25 Javascript
在React 组件中使用Echarts的示例代码
Nov 08 Javascript
Vue组件间的通信pubsub-js实现步骤解析
Mar 11 Javascript
JS Generator 函数的含义与用法实例总结
Apr 08 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中SQL注入攻击与XSS攻击
2012/06/10 PHP
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
2013/06/09 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
2014/05/05 Javascript
JavaScript数据结构和算法之二叉树详解
2015/02/11 Javascript
js+html5实现canvas绘制圆形图案的方法
2015/06/05 Javascript
Javascript常用小技巧汇总
2015/06/24 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
jQuery 特性操作详解及实例代码
2016/09/29 Javascript
浅谈js中的变量名和函数名重名
2017/02/13 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
Angular5给组件本身的标签添加样式class的方法
2018/04/07 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
jquery添加div实现消息聊天框
2020/02/08 jQuery
JavaScript常用工具函数大全
2020/05/06 Javascript
JavaScript实时更新当前的时间的示例代码
2020/07/15 Javascript
Python中使用PyHook监听鼠标和键盘事件实例
2014/07/18 Python
Python中二维列表如何获取子区域元素的组成
2017/01/19 Python
python安装cx_Oracle模块常见问题与解决方法
2017/02/21 Python
简单了解Python matplotlib线的属性
2019/06/29 Python
Python计算一个点到所有点的欧式距离实现方法
2019/07/04 Python
python模块常用用法实例详解
2019/10/17 Python
python中property和setter装饰器用法
2019/12/19 Python
python 计算概率密度、累计分布、逆函数的例子
2020/02/25 Python
python实现全排列代码(回溯、深度优先搜索)
2020/02/26 Python
CSS3实现多背景模拟动态边框的效果
2016/11/08 HTML / CSS
HTML5的革新 结构之美
2011/06/20 HTML / CSS
基于HTML5超酷摄像头(HTML5 webcam)拍照功能实现代码
2012/12/13 HTML / CSS
Under Armour安德玛荷兰官网:美国高端运动科技品牌
2019/07/10 全球购物
销售员个人求职的自我评价
2014/02/10 职场文书
二年级评语大全
2014/04/23 职场文书
离婚律师函范本
2015/05/27 职场文书
环保建议书作文400字
2015/09/14 职场文书
大学学生会主席竞选稿
2015/11/19 职场文书
《黑岩★★射手 DAWN FALL》BD发售宣传CM公开
2022/04/04 日漫
Java 定时任务技术趋势简介
2022/05/04 Java/Android