我的代码中有文件数组。当我添加新文件时,其显示的数组长度不正确。但是,如果我用settimeout检查长度,则显示正确的长度。
console.log('row.myDocuments: ', row.myDocuments);
console.log('length: ', row.myDocuments.length);
在这样的控制台中获取结果
每次添加新文件时,控制台输入的长度为(实际长度-1)
答案 0 :(得分:2)
这与Chrome开发者工具有关。您在“ []”旁边的蓝色正方形中看到小“ i”了吗?如果将鼠标悬停在它上面,它会显示“下面的值刚刚被评估”。这意味着在您记录阵列(实际上是一个javascript对象)时,它为空,但是后来Chrome检测到了更改,并在控制台中更新了该阵列。
(而且只有当您使用小箭头将其展开时,您才能在记录数组时看到该数组为空,因为它看起来像这样的“ []”,否则它将看起来像这样的“ [{ ...}]“)。
Chrome在记录对象时会更新对象,但不是简单的值。 Array.length是一个数字,因此在您对其进行记录时,它会为其提供值(0),并且如果Array.length在以后更改,它将不会更新控制台。但是如果您在更改后将其记录下来(与超时一样),它将记录最近的值。