数组有记录但在控制台中显示数组长度为 0

Man*_*kar 1 arrays console angular

我的代码中有文件数组。当我添加新文件时,它显示的数组长度不正确。但是,如果我用 settimeout 检查长度,它会显示正确的长度。

console.log('row.myDocuments: ', row.myDocuments);  
console.log('length: ', row.myDocuments.length);
Run Code Online (Sandbox Code Playgroud)

在这样的控制台中获得结果,

在此处输入图片说明

每次添加新文件时,控制台中的长度为(实际长度-1)

Ale*_*x D 8

这与 Chrome 开发工具有关。您看到“[]”旁边蓝色方块中的小“i”了吗?如果您用鼠标将其悬停,它会显示“刚刚评估了下面的值”。这意味着在您记录数组(实际上是一个 javascript 对象)时,它是空的,但后来 Chrome 检测到更改,并在控制台中更新了数组。

(只有当您使用小箭头展开它时,您才能看到数组在记录时为空,因为它看起来像这样“[]”,否则它看起来像这样“[{... }]”)。

Chrome 会在您记录对象时更新对象,但不会更新简单的值。Array.length 是一个数字,所以当你记录它时,它会给你它的值(0),如果 Array.length 以后改变,它不会更新控制台;但是如果你在更改后记录它(就像你的超时一样),它会记录最近的值。