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