未捕获的类型错误:无法读取属性'长度'未定义的谷歌地图V3

Uncaught TypeError: Cannot read property 'length' of undefined Google Map V3

本文关键字:长度 未定义 V3 谷歌地图 属性 类型 错误 读取      更新时间:2023-09-26

我知道这个问题被问了很多时间,但我似乎找不到问题的正确答案。

它实际上非常直接:

service.getDetails(request, function(place, status) {
    if (status == google.maps.places.PlacesServiceStatus.OK) {

是在对其照片使用getDetails之前使用的,所以我们知道它实际上会获取非空数据。接下来,

for (var i = 0; i < place.photos.length; i++) {
    ....
}

之后我使用了照片的长度。

请注意:它很好用,除非这个地方实际上没有照片可以拉。。。。现在它用"Uncaught TypeError:无法读取未定义的属性'length'"来抛出它。

在调用place.photos.length之前,有没有一个条件可以让我消除这个错误消息?

感谢阅读!请帮忙。

只需首先检查place.photos是否存在:

if (place.photos)
  for (var i = 0; i < place.photos.length; i++) 
    // ...

使用if检查,如果place.photosnullundefined(可能undefined是最有可能的,正如您的错误所示),则不会尝试循环。