资讯专栏INFORMATION COLUMN

记一次"Value below was evaluated just now"

shmily / 1919人阅读

摘要:今天工作的时候使用打印数组调试代码的时候,发现了一个奇怪的现象咦数组展开之前,显示的是展开后却显示的是。如果此时数组或者对象的数据没有发生改变,那么就一直显示此时的数据新人一枚,如有错误欢迎大家指出,谢啦

今天工作的时候使用console.log()打印数组调试代码的时候,发现了一个奇怪的现象

咦 数组展开之前,显示的是[1,2,3],展开后却显示的是[1,2,3,4]。好奇怪啊,以前怎么
没有遇到啊(原谅我的年轻。。。)这时候我注意到右上角有个蓝色的小图标,于是我把鼠
标移动上去,最后出现在我眼前的是“Value below was evaluated just now”这一行大字。
为了弄清楚原因,我查了一波资料,才发现是因为console.log()之后的代码改变了数组!

let array = [1, 2, 3]
console.log(array)
array.push(4)

结论就是:当你展开数组的时候,显示出来的数据是最终发生了改变的数据

后来我在想,如果是数据发生改变之前,我就展开了数组,那么还会发生这种“奇怪”的现象吗?
于是我执行了下面的代码:

let array = [1, 2, 3]
console.log(array)
setTimeout(() => array.push(4), 5000)

眼疾手快的我在不到一秒的时间点开了数组,等待着“奇怪”的现象发生
等了好久好久,发现一直是这个界面:

这次,我刷新等5秒之后再展开数组看结果吧:

哈哈,“奇怪”的现象又发生了

所以结论就是:当你在控制台展开打印出来的数组(或者对象)的时候,如果此时数组(或者对象)的数据已经发生了改变,那么将显示改变之后的数据。如果此时数组(或者对象)的数据没有发生改变,那么就一直显示此时的数据

(新人一枚,如有错误欢迎大家指出,谢啦)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/103449.html

相关文章

  • 一个“诡异”的console.log()结果

    摘要:一个诡异的结果在前端开发中,我们都少不了用来输出变量和调试。再看下面一个例子图中的结果,我是在执行了这句话之后才点击的小三角,然而结果却没有变成诡异结果的样子。 一个诡异的结果 在前端开发中,我们都少不了用console.log来输出变量和调试。可是在使用它的过程中,偶尔也会出现一些让我们很费解的行为,如下图: showImg(https://segmentfault.com/img/...

    pkwenda 评论0 收藏0
  • css3 attr 简单介绍和实例

    摘要:表达式的计算值和属性的值与指定名称的元素有关根据下面的规则在的表达总是返回一个字符串。在没有命名空间这将只是一个标识符。 本文不是w3c翻译 保留原文的基础上 做出自己的理解为主 参考 http://www.w3.org/TR/2015/CR-css-values-3-20150611/#attr-notation attr函数介绍 The attr() fun...

    GeekGhc 评论0 收藏0
  • console.log打印对象时属性缺失的解决方法

    摘要:输出对象属性缺失首先,定义了一个对象,其拥有四个属性。调用函数时,我们想知道传入函数的参数是怎样的,会先调用将传入的对象打印出来,最后在函数内的某处删除传入对象的属性。方法对象展开喵喵月号使用的对象展开符操作,获取到的副本。1. 序 在编写代码时,我们常常用console.log()的方式将信息在控制台中打印出来以帮助我们进行前端调试。一般情况下,我们打印普通值都没有问题,但在打印对象类型时...

    Michael_Ding 评论0 收藏0
  • CKAD认证中的部署教程

    摘要:以上便是官方的部署方法。如果使用表示读者可参考本章内容主要介绍了认证中要求掌握的部署配置启动网络插件,跟上一篇的内容比较,主要是通过文件去控制创建集群,两章的部署过程一致,只是网络插件有所不同。在上一章中,我们已经学会了使用 kubeadm 创建集群和加入新的节点,在本章中,将按照 CKAD 课程的方法重新部署一遍,实际上官方教程的内容不多,笔者写了两篇类似的部署方式,如果已经部署了 kub...

    番茄西红柿 评论0 收藏2637

发表评论

0条评论

shmily

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<