为了账号安全,请及时绑定邮箱和手机立即绑定

JS调试输出数组时,显示的值与实际不一致

JS调试输出数组时,显示的值与实际不一致

偶然的你 2018-10-09 17:29:54
如题目所示。代码见如下:console.log(arrPoint.length); console.log(arrPoint);在控制台显示:Point是点的实例,结构是{x:1,y:1}这样的对象。我代码是连着输出的,没有做任何操作。为何下面明明有3个对象。length只有2,而且2:Point也没了。
查看完整描述

1 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

其实这是一个有点小意思的现象,因为当你在Chrome Console点击展开数组时,会重新去读一遍内存真实的值然后显示,一但展开后就不会再变

console.log(arrPoint.length);
        console.log(arrPoint);

分别显示3其实是没有错的:

https://img1.sycdn.imooc.com//5bfba196000142e801750039.jpg

当你点击展开的时候就变成2个,因为你点开后实际是后面的代码已经执行完毕了。

一个有趣的示例:

var Point = function() {}var arr = [ new Point(), new Point(), new Point() ]console.log(arr.length)console.log('第一个数组', arr)
setTimeout(function() {
    arr.push(new Point())    console.log('第二个数组', arr)
}, 1000 * 5)

如果你在5秒内展开第一个数组会看到3个,5秒后会看到第二个数组展开会看到4个。

如果你在5秒后才展开第一、第二数组会看到4个。

所以Console显示的未必是最真实的。


查看完整回答
反对 回复 2018-11-26
  • 1 回答
  • 0 关注
  • 2095 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信