前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >console.log的那件事

console.log的那件事

作者头像
JowayYoung
发布2020-09-11 17:07:35
4190
发布2020-09-11 17:07:35
举报
文章被收录于专栏:JowayYoung谈前端JowayYoung谈前端
起因
  • 很多朋友在群里问过,为什么打印的对象/数组里面明明有值,但是我后面打印它某个值跟预期不一样?
看代码
代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    const obj = {

    }
    console.log(obj, 'obj');
    console.log(obj.a, 'a')
    obj.a = '前端巅峰';
</script>

</html>
  • 这段代码会输出什么?
  • 很奇怪,对吧?
讲解
  • 当你打印时是空数组/空对象,但是点开后,里面却有属性,这属于console执行的那一刻,数组/对象里面是没有元素的,但是后面却被添加了。(不管后面是同步还是异步添加)
  • 如果一开始就在对象/数组中有的元素,那么就会像下面一样
代码语言:javascript
复制
    const obj = {
        b:2
    }
    console.log(obj, 'obj');
    console.log(obj.a, 'a')
    obj.a = '前端巅峰';
  • 输出结果,一开始打印就会在对象中对象对应的数据:
什么时候会出现这种情况
  • 像使用redux或者使用接口请求回来的数据,异步更新时候,就有可能出现上面这种打印存在不确定的情况
如何避免?
  • 使用JSON.stringify()打印
代码语言:javascript
复制
    const obj = {
    }
    console.log(JSON.stringify(obj), 'obj')
    obj.a = '前端巅峰';
  • 这样就不会再出现打印歧义的问题

结语

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IQ前端 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 起因
  • 看代码
  • 讲解
  • 什么时候会出现这种情况
  • 如何避免?
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档