如果console.log()中的参数是一个引用对象,控制台上显示的是程序结束后对象的值,而不是程序执行过程中对象的值。
测试代码:
1 >> var obj={hello:1, world:2};
2 >> //
3 >> var fn = function(o){
4 >> var ref =o;
5 >> console.log(ref);
6 >> ref.good ="good";
7 >> }
8 >> //
9 >> fn(obj);
10 >> //
11 >> console.log(obj);
按照逻辑来说,第5行代码输出的对象应该是{hello:1, world:2},与第11行的对象{hello:1,world:2,good:"good"}应该不同的。
但是实际的输出都是: {hello:1,world:2,good:"good"}
原因在于firebug javascript控制台检查的也是对象的引用。当程序结束时,引用对象也变成了最终结果。