这两个阵列之间的区别是什么?

时间:2017-08-10 14:34:36

标签: javascript

我在控制台中使用chrome记录它们,它们看起来像这样:

(A) []

(B) (3) [{…}, {…}, {…}]

在控制台中打开它们时,这些数组的内部是相同的。不同之处在于我在B的值中使用

进行硬编码
arrayA.push({
   ...
});

在数组A的空(arrayA = [];)上。因此,当尝试访问数组A中的元素时,arrayA[0]返回undefined,与返回预期值的arrayB[0]相比。

编辑:此处为JSFiddle

1 个答案:

答案 0 :(得分:0)

您的小提示显示问题所在:异步代码。您正在进行ajax调用,并在调用返回后将数据推送到数组。您的console.log数组在ajax调用返回之前发生,因此此时数组仍为空。

如果您在回调中控制数据,那么您将看到实际数据。高度简化的例子:

var a = [];
$.getJSON('http://example.com', function(data) {
    a.push(data);  
    console.log(a); // now a contains data
});
console.log(a); // a is still empty, because the getJSON hasn't returned yet