我正在开发一个 Angular 应用程序,它从 API 加载数据。
一切都按预期工作,除了定期在 Chrome console.log 中收到此错误
TypeError: Cannot read property 'longitude' of undefined
这也会导致一些后续功能失效。提示的线 Angular 如下
function updateMapWaypoint(lastposition) {
console.log("updateMapWaypoint(%s) called", lastposition);
console.log($scope.units[$scope.selectedUnitIndex]);
var longitude = (lastposition) ? $scope.units[$scope.selectedUnitIndex].lastposition.gps.longitude : $scope.unsortedPositions[$scope.selectedPositionIndex].gps.longitude;
第一个是调试,最后一个是造成麻烦的线路。据我从控制台中的 printet 对象可以看到。 JavaScript 应该可以毫无问题地从对象中定位经度,但是它会抛出错误,并且我找不到任何方法来解决它。
感谢所有帮助,如果需要更多详细信息,我会尽可能提供。
最佳答案
这看起来可能是一个竞争条件。
console.log()
将向您显示该对象现在,以及不是您调用 console.log()
时的情况。 。要查看某个对象在某个时间点的属性,您必须复制其内容并将其发送到 console.log()
,例如通过字符串化它:
console.log(JSON.stringify(myObject))
或者如果您使用的是 Angular:
console.log(angular.extend({}, myObject));
这很令人困惑(它已经让我困惑了好几次)。请记住您正在发送 console.log()
对象引用,而不是对象的副本。
关于javascript - JavaScript 的不稳定行为 - 无法读取未定义的属性 'longitude',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33595310/