javascript 变量,作用域,内存管理小结

  js的变量保存两种类型的数据——基本数据类型与引用类型。具有以下几点特征:

 

  变量:

1)基本类型值在内存中占固定大小的空间,因此被保存在栈内存中;

2) 把保存基本类型值得变量赋给另一个变量,会创建这个值的副本;

3) 引用类型的值是对象,存在堆内存中;

4) 变量不会保存对象,只是创建了新的指针指向该对象,对象始终在堆内存中;

5) 指向对象的变量复制给一个新的变量,只是复制了指向对象的指针,最后两个变量都指向该对象;

6)  查看变量属于哪种基本类型得用typeof操作符,查看变量是哪种引用类型得用instanceof操作符;

   

  作用域

1) 变量存在于执行环境中,分为全局与局部执行环境;

2) 局部环境可以访问其父环境(全局环境是最大的父环境),逐级递上,相反,父环境不能访问子环境;

 

  内存管理:

1) js具有自动垃圾收集机制;

2) 离开作用域的值被标记为可以回收的值;

3) 标记值清除法比较流行,它是将未被使用的值标记起来,运行时回收它的内存;

4) 还有种清除法叫“引用计数”,它的意思是追踪各值引用的次数,javascript引擎已经不再使用这种方法,但在Ie中做Dom操作时,会涉及循环使用dom对象及相关值,还是会出错;

5)解除变量的引用,不仅可以消除循环引用的现象,对内存垃圾回收也有好处,所以要及时解除全局变量,全局变量的属性以及循环使用的变量;

6)解除变量引用方法:“ 变量=null;”通知垃圾回收机制来回收它的内存。

 

posted @ 2016-02-21 22:04  光辉的一角  阅读(195)  评论(0编辑  收藏  举报