码迷,mamicode.com
首页 > 编程语言 > 详细

javascript console.log() 带来的疑惑

时间:2017-11-08 20:08:29      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:string   执行   使用   color   状态   引用   code   asc   nbsp   

这两天在写插件的时候无意间就被 console.log() 给坑到了。

 看下面这个例子:

    var obj = {‘k1‘:[1,2,3], ‘k2‘:[2,3,4]}

    console.log( obj )        // {‘k1‘:[0,2,3], ‘k2‘:[2,3,4]}
    console.log( obj.k1 )  // [1,2,3]

    obj[‘k1‘] = [0,2,3]

    console.log( obj )        // {‘k1‘:[0,2,3], ‘k2‘:[2,3,4]}
    console.log( obj.k1 )    // [0,2,3]

是不是很奇怪, 未赋值之前的console.log() 居然显示赋值后的状态。 最坑的是数组对象居然没有受到影响,依然显示正常顺序的值! 我心里就想吧,obj  和 obj[‘k1‘] 都是对象,为什么 obj 就奇怪点? 我甚至还想到了 引用传值,作用域声明。真是伤脑筋! 

最后还是请教一位同事发现是 console.log() 的问题。

然后就换了 alert() 

当然 alert() 直接打印不出来对象,那就使用  alert( JSON.stringify() ),可以正常显示,后来试了 

 console.log( JSON.stringify(obj) )  也可以
    var obj = {‘k1‘:[1,2,3], ‘k2‘:[2,3,4]}

    console.log( JSON.stringify(obj) )        // {‘k1‘:[1,2,3], ‘k2‘:[2,3,4]}
    console.log( JSON.stringify(obj.k1) )  // [1,2,3]

    obj[‘k1‘] = [0,2,3]

    console.log( JSON.stringify(obj.k1) )        // {‘k1‘:[0,2,3], ‘k2‘:[2,3,4]}
    console.log( JSON.stringify(obj) )    // [0,2,3]

如果想显示对象还可以长这样:

console.log( JSON.parse(JSON.stringify(obj)) ) 

好吧,这真是个不小的坑! 

搜了一下发现: console.log 将在最后一个执行状态显示对象,而不是在调用 console.log的状态。

最后还是不明白,为什么 obj 和 obj.k1 同为对象, console.log() 打印不同?

 

javascript console.log() 带来的疑惑

标签:string   执行   使用   color   状态   引用   code   asc   nbsp   

原文地址:http://www.cnblogs.com/navysky/p/7805430.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!