Firebug: 关于console.log(obj)

来源:互联网 发布:dota2邪恶镰刀 知乎 编辑:程序博客网 时间:2024/06/07 21:45

如果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控制台检查的也是对象的引用。当程序结束时,引用对象也变成了最终结果。