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 相关文章推荐
基于jquery 的一个progressbar widge
Oct 29 Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
Jan 23 Javascript
超简单JS二级、多级联动的简单实例
Feb 18 Javascript
jQuery中next方法用法实例
Apr 24 Javascript
举例详解JavaScript中Promise的使用
Jun 24 Javascript
js控件Kindeditor实现图片自动上传功能
Jul 20 Javascript
第九篇Bootstrap导航菜单创建步骤详解
Jun 21 Javascript
JS 实现缓存算法的示例(FIFO/LRU)
Mar 20 Javascript
基于javascript的拖拽类封装详解
Apr 19 Javascript
如何基于js判断浏览器版本
Feb 20 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
Jan 03 Vue.js
js中延迟加载和预加载的具体使用
Jan 14 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
利用递归把多维数组转为一维数组的函数
2006/10/09 PHP
PHP读MYSQL中文乱码的解决方法
2006/12/17 PHP
php 文章调用类代码
2011/08/11 PHP
php获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
thinkphp关于简单的权限判定方法
2017/04/03 PHP
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
js getElementsByTagName的简写方式
2010/06/27 Javascript
jQuery查询数据返回object和字符串影响原因是什么
2013/08/09 Javascript
JS中for循序中延迟加载动态效果的具体实现
2013/08/18 Javascript
完美解决IE低版本不支持call与apply的问题
2013/12/05 Javascript
Javascript selection的兼容性写法介绍
2013/12/20 Javascript
jquery隔行换色效果实现方法
2015/01/15 Javascript
Jquery中find与each方法用法实例
2015/02/04 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
JavaScript ParseFloat()方法
2015/12/18 Javascript
nodejs模块学习之connect解析
2017/07/05 NodeJs
浅谈angular2 组件的生命周期钩子
2017/08/12 Javascript
微信小程序新手教程之页面打开数量限制
2019/03/03 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
2020/05/12 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
跟老齐学Python之通过Python连接数据库
2014/10/28 Python
python实现八大排序算法(1)
2017/09/14 Python
Python实现的文本对比报告生成工具示例
2018/05/22 Python
Python3基于sax解析xml操作示例
2018/05/22 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
python简单利用字典破解zip文件口令
2020/09/07 Python
如何用Python徒手写线性回归
2021/01/25 Python
Python爬虫自动化爬取b站实时弹幕实例方法
2021/01/26 Python
ziaja齐叶雅官方海外旗舰店:来自波兰的天然护肤品牌
2017/01/02 全球购物
Clarisonic美国官网:科莱丽声波洁面仪
2017/10/12 全球购物
员工薪酬激励方案
2014/06/13 职场文书
四风问题对照检查材料思想汇报
2014/10/07 职场文书
公开致歉信
2019/06/24 职场文书
详解Vue的options
2021/05/15 Vue.js
浅析Redis Sentinel 与 Redis Cluster
2021/06/24 Redis
Django实现WebSocket在线聊天室功能(channels库)
2021/09/25 Python