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之大字符串的连接的StringBuffer 类
May 08 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
Jan 16 Javascript
两种方法实现文本框输入内容提示消失
Mar 17 Javascript
js实现用户注册协议倒计时的方法
Jan 21 Javascript
浅谈javascript中的闭包
May 13 Javascript
js实现网页多级级联菜单代码
Aug 20 Javascript
javascript表单控件实例讲解
Sep 13 Javascript
js变量提升深入理解
Sep 16 Javascript
D3.js实现散点图和气泡图的方法详解
Sep 21 Javascript
详解如何在Vue里建立长按指令
Aug 20 Javascript
微信小程序如何加载数据库真实数据的实现
Mar 04 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
Sep 21 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
Views rows style模板重写代码
2011/05/16 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
Yii2中添加全局函数的方法分析
2017/05/04 PHP
Javascript事件热键兼容ie|firefox
2010/12/30 Javascript
js 实现css风格选择器(压缩后2KB)
2012/01/12 Javascript
jQuery+css实现图片滚动效果(附源码)
2013/03/18 Javascript
浅谈JavaScript之事件绑定
2013/07/08 Javascript
JavaScript 对象深入学习总结(经典)
2015/09/29 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
2016/07/22 Javascript
BootStrap 实现各种样式的进度条效果
2016/12/07 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
Angular中的interceptors拦截器
2017/06/25 Javascript
vue cli 3.0 使用全过程解析
2018/06/14 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
vue element-ui中table合计指定列求和实例
2020/11/02 Javascript
js实现移动端轮播图滑动切换
2020/12/21 Javascript
[57:50]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第二局
2016/03/05 DOTA
用Python将动态GIF图片倒放播放的方法
2016/11/02 Python
使用Python更换外网IP的方法
2018/07/09 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
2019/05/04 Python
python3的print()函数的用法图文讲解
2019/07/16 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
Django 权限管理(permissions)与用户组(group)详解
2020/11/30 Python
使用css3和jquery实现可伸缩搜索框
2014/02/12 HTML / CSS
html5简介及新增功能介绍
2020/05/18 HTML / CSS
HTML5实现直播间评论滚动效果的代码
2020/05/27 HTML / CSS
美国珠宝网上商店:Jeulia
2016/09/01 全球购物
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
美国购买新书和二手书网站:Better World Books
2018/10/31 全球购物
员工考核管理制度
2014/02/02 职场文书
小学教师先进事迹材料
2014/12/15 职场文书
个人催款函范文
2015/06/24 职场文书
Python使用scapy模块发包收包
2021/05/07 Python
修改并编译golang源码的操作步骤
2021/07/25 Golang
OpenFeign实现远程调用
2022/08/14 Java/Android