看了下时间,发现已经年末了,前段时间一直忙着做一个关于学生评价辅导员的系统,本人处女作,因为是第一次,做的也比较慢,所以很久没进行知识的总结。
不过在制作过程,看了挺多的资料,特此在这闲暇的下午,写一篇小小的文章,写的不好,请多多指教 ,不过应该较之以前都有所提高,自己的东西多了,废话不多说,直接进入正题!
首先我们应该都了解过Java或C其中一种吧(我的学校两门课都开设了), 相信学过这些语言的小伙伴们都应该清楚在存储数据时,栈中存储原始数据类型,而堆里则存放引用数据类型,But,But,But引用类型的指针变量是存放在栈里的,为了更好地理解,请继续看:
代码 int i = 5; // 原始数据类型 int arr[5] = {1,2,3}; // 引用数据类型 内存分析(补充: 堆和栈其实是同一个东西,只是由于存储数据的算法不同,而把内存划分为栈内存和堆内存, 本人学习java过去已好久,也许有不对之处,望指出!) 有请主角JavaScript登场
在弱类型编程语言JS中,数据的存储依托于一个叫做变量对象的东东,话不多说(其实是我知道的并不多,嘻嘻~~~),直接来个栗子:
代码 var i = 5; // 原始数据类型 var obj = new Object(); // 引用数据类型 内存分析下面我要来点猛的了,前方高能,准备好啊,准备好啊,准备好啊
关于JS函数二三事有关匿名函数,我们就从函数表达式切入吧!!!
var fn = function () { // code };从上图我们可以得出,一个匿名函数也就是没有地址内存的一块空间,其生存期即被调用后就被清除.
所以我们就好理解以下代码了:
dom.addEventListener('click', function(){ // code }, false); dom.removeEventListener('click', function(){ // code }, false); // 无效,无法清除上面添加的事件处理程序因为在dom对象触发了click事件时,内存会随机分配相应的空间给匿名函数,而当事件处理后,系统对该内存进行回收,并且是随机性分配,所以上下两个匿名函数是不一样的,从而清楚相应的事件处理程序无效。
由于匿名函数功能之强大,所以在本文不对其进行更多的讲解
欢迎大家拍砖,指出不当之处,谢谢!!!