欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

分享几道js内存相关的练习题

程序员文章站 2022-11-09 08:49:04
js内存相关题 引用自身 //错误实例 var a = {self : a}; //这样a.self会是undefined //上面这样等于 var a;...

js内存相关题

引用自身

//错误实例
var a = {self : a};     //这样a.self会是undefined

//上面这样等于
var a;                  //undefined
a.self = a              //这时a还是undefined

//正确写法
var a = {};
a.self = a;            //这样a.self就等于它自己

注意新旧地址

var a = {n:1};
var b = a;

//这一行运行的时候先运行a = {n:2},相当于给了a一个新地址
//再运行a.x = a,相当于把新地址赋给了旧地址上对象一个x属性
a.x = a = {n:2}  

//然而有了新地址的a并没有x属性
alert(a.x);       // undefined
//b是引用的a的旧地址,所以b有
alert(b.x);       // [object,object]

垃圾、垃圾回收

var a = function(){};
var a = null;

/*这样上面那个function因为没有被任何东西引用,所以function占的内存就是垃圾,
会被浏览器回收*/

下面的function是垃圾吗?

var fn = function(){};
document.body.onclick = fn;
fn = null;
// 不是,因为document.body.onclick = fn;还在引用

想要function变成垃圾可写document.body.onclick = null;

若是把页面关了,就相当于document不存在了,于是这时body、onclick、function都是垃圾,浏览器会把它们回收。