0
0

webkit调试器console.log在控制台输出对象的坑

rank 发表于 2012年12月13日 15:46 | Hits: 2089
Tag: 开发日志

现在新版本的chrome基本解决了这一问题,我用的是chrome 24dev版。
而safari这个坑还是没解决,firefox正常。
看个很简单的引用类型的代码。

<script>
function ref() {
  var foo = {}
  foo.bar = 'ranklau';
  console.log(foo);
  return foo;
}

var o = ref();
o.bar = Math.random();
console.log(o)
</script>

与预期的输出应该是将ref函数中的console.log输出的信息放到缓冲区或是直接输出到终端,类似这样的结果:
引用
Object {bar: "ranklau"}
Object {bar: 0.5821025553159416}
但,webkit系的调试器不是这样,它在低版本的chrome(24-)以及safari等webkit的浏览器里使用的调试器都是出现两个Object旁边有个小三角,点击后让你查看object的值。
http://www.baidupcs.com/thumbnail/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202012-12-13%20%E4%B8%8B%E5%8D%883.39.53.png?fid=1375779035-250528-3110689844&time=1355384598&sign=FPDTAE-DCb740ccc5511e5e8fedcff06b081203-hA1TDkQajm0GZFbKCPh1JgRjJYI%3D&expires=8h&digest=ef84d7c1550c511b54c6cf9c6c6e3283&size=c850_u580&quality=100

点击这两个三角,出现的结果都是随机数。由此证明
保存变量的引用,为什么要这样呢,最大的可能性是可以提高console的性能。
而调试的时候需要小心这样的问题,尽可能的直接console特定值,如上例,可以console.log(o.bar)。以免被绕到坑里。

原文链接: http://www.never-online.net/blog/article.asp?id=328

0     0

评价列表(0)