gpt4 book ai didi

JavaScript数组长度为0

转载 作者:行者123 更新时间:2023-11-28 17:55:59 25 4
gpt4 key购买 nike

我遇到了一些奇怪的行为,如下所示,它显示数组长度为 0,尽管在它之前打印它表明长度明显大于 0:

var getTopSelection = function(callback) {
var topSelection = [];
for(var i=0; i < markers.length; i++) {
if(markers[i].map !== null) {
var stationID = markers[i].id;
getTrips(stationID, globalFromDate, globalToDate, function(response) {
topSelection.push({
StationID: stationID,
Trips: response
});
}, function(error) {
console.log(error);
})
}
}
callback(topSelection);
};

getTopSelection(function(response) {
console.log(response); //115
console.log(response.length); //116
})

这显示在检查器中,“length: 42”属于第 115 行。

enter image description here

问题:前面一行明明说长度是42,为什么显示长度是0?

最佳答案

console.log is not synchronous .

您的 console.log 语句将在您调用 getTrips 之后、getTrips 回调触发之前出现。

实际上,您正在尝试return the response from an asynchronous call .

响应是一个对象。 JS 中的对象总是被引用的。您正在记录该引用,然后当 getTrips 回调触发时,该对象将使用新值(和新长度)进行更新。新对象反射(reflect)在控制台中。

response.length 是一个数字。你正在记录它。数值不是引用。它是 0,因为在您调用 console.log,它是 0。当值更改时,显示不会更新,因为它是数字而不是对象。

关于JavaScript数组长度为0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44433131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com