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 相关文章推荐
JS实现浏览器菜单命令
Sep 05 Javascript
js取float型小数点后两位数的方法
Jan 18 Javascript
jQuery实现数字加减效果汇总
Dec 16 Javascript
jquery滚动到顶部底部代码
Apr 20 Javascript
BootStrapTable服务器分页实例解析
Dec 20 Javascript
详解Vue-Cli 异步加载数据的一些注意点
Aug 12 Javascript
jQuery实现动态加载select下拉列表项功能示例
May 31 jQuery
微信小程序如何修改radio和checkbox的默认样式和图标
Jul 24 Javascript
Angular8基础应用之表单及其验证
Aug 11 Javascript
微信小程序实现左侧滑栏过程解析
Aug 26 Javascript
JS合并两个数组的3种方法详解
Oct 24 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
Jan 12 Vue.js
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 判断变量类型实现代码
2009/10/23 PHP
PHP及Zend Engine的线程安全模型分析
2011/11/10 PHP
PHP易混淆函数的区别及用法汇总
2014/11/22 PHP
Laravel 5.3 学习笔记之 错误&amp;日志
2016/08/28 PHP
浅谈PHP进程管理
2019/03/08 PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
2019/06/05 PHP
Laravel-admin之修改操作日志的方法
2019/09/30 PHP
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
JavaScript实现的XML与JSON互转功能详解
2017/02/16 Javascript
SpringMVC+bootstrap table实例详解
2017/06/02 Javascript
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
jQuery实现定时隐藏对话框的方法分析
2018/02/12 jQuery
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
创建Vue项目以及引入Iview的方法示例
2018/12/03 Javascript
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
Vue基于iview table展示图片实现点击放大
2020/08/05 Javascript
Python中isnumeric()方法的使用简介
2015/05/19 Python
python实现简单点对点(p2p)聊天
2017/09/13 Python
网红编程语言Python将纳入高考你怎么看?
2018/06/07 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
2019/04/11 Python
Python 使用 Pillow 模块给图片添加文字水印的方法
2019/08/30 Python
python3通过udp实现组播数据的发送和接收操作
2020/05/05 Python
Django 解决开发自定义抛出异常的问题
2020/05/21 Python
python中pivot()函数基础知识点
2021/01/03 Python
解决selenium+Headless Chrome实现不弹出浏览器自动化登录的问题
2021/01/09 Python
Html5游戏开发之乒乓Ping Pong游戏示例(一)
2013/01/21 HTML / CSS
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
Saks Fifth Avenue澳洲/亚太地区:萨克斯第五大道精品百货店
2019/06/09 全球购物
QQ空间主人寄语大全
2014/04/12 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
茶楼服务员岗位职责
2015/02/09 职场文书
2015年环境监察工作总结
2015/07/23 职场文书
宿舍卫生管理制度
2015/08/05 职场文书
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery