JS堆栈内存练习

217 阅读1分钟
var obj = {
	n:10,
	m:obj.n*10 //=>Uncaught TypeError:Cannot read property 'n' of undefined
};
console.log(obj.m); 

你知道输出来的结果是什么吗?

理解:

  • 形成一个全局作用域(栈内存)
  • 代码自上而下执行
    • 首先开辟一个新的堆内存(AAAFFF111),把键值对储存到堆内存中

    • n:10

      m:obj.n*10 =>obj.n

      此时堆内存信息还没有存储完成,空间的地址还没有给obj,此时obj是undefined,obj.n<=>undefined.n

所以结果是:Uncaught TypeError:Cannot read property 'n' of undefined

练习一:

var obj = {
	n:10;
};
obj.m = obj.n*10;
console.log(obj.m); 
答案:100

练习二:

var ary1 = [3,4];
var ary2 = ary1;
ary2[0] = 1;
ary2 = [4,5];
ary2[1] = 2;
ary1[1] = 0;
console.log(ary1,ary2); 
答案:10    42