Javascript的不稳定行为 - 无法读取属性'经度'未定义的

时间:2015-11-08 14:57:20

标签: javascript angularjs debugging

我正在开发一个Angular App,它从API加载数据。

除了在Chrome console.log

中定期收到此错误外,一切都按预期工作
  

TypeError:无法读取属性'经度'未定义的

updateMapWaypoint error

这会导致一些后续功能失效。线角度抱怨,是以下

    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应该可以毫无困难地从对象中找到经度,但是它会引发错误,我找不到任何解决方法。

感谢所有帮助,如果需要更多详细信息,我会尽可能为我提供。

1 个答案:

答案 0 :(得分:1)

这看起来可能是竞争条件。

console.log()会显示对象,因为它现在是 ,而不是当你调用console.log()时是什么。要在certian时间点查看对象的属性,您必须复制其内容并将其发送到console.log(),例如通过对其进行字符串化:

console.log(JSON.stringify(myObject))

或者如果您使用的是Angular:

console.log(angular.extend({}, myObject));

这令人困惑(它几次与我搞砸了)。请记住,您要发送console.log() 对象引用,而不是该对象的副本。