zoukankan      html  css  js  c++  java
  • Console.log输出数组,值并非期望中的值


    有时候,console.log输出的并非当时想输出的结果,而是运行结束之后的结果。

    • 例如,有一个循环向数组添加数据,并输出数组在每一次添加新项的结果:
    let a = [];
    for(let i=0;i<10;i++){
        a.push(i);
        console.log(a);
    }
    
    

    控制台输出为:

    控制台输出.png

    乍一看输出十分正常,可是当把数组的箭头展开时。

    控制台输出.png

    数组内部却并非预料中的一样,而是输出了最后的运行结果。

    • 个人的猜想:
      在console.log执行的时候,浏览器会对log的对象求一次值,打印出来是 Object ,可以继续展开。但当你展开控制台中的 Object 的时候,浏览器又会对它求一次值,这一次是显示它的属性。所以才会有前后打印的东西不一样的情况发生,因为对象引用的实体的值改变了。

    • 如果把 console.log(a) 改为 console.log(JSON.parse(JSON.stringify(a)))

      控制台输出.png

      便是刚开始期望的结果。

    本文转自 https://www.jianshu.com/p/6db4a08d69af,如有侵权,请联系删除。

  • 相关阅读:
    226_翻转二叉树
    199_二叉树的右视图
    145_二叉树的后序遍历
    做IT,网络/系统/数据库/软件开发都得懂
    [恢]hdu 1200
    [恢]hdu 2080
    [恢]hdu 1222
    [恢]hdu 1128
    [恢]hdu 2153
    [恢]hdu 2132
  • 原文地址:https://www.cnblogs.com/hustshu/p/15471634.html
Copyright © 2011-2022 走看看