2017-02-24 131 views
0

我是javascript的新手,并试图玩API,我不知道为什么在for循环完成后,有些代码行不执行。任何人都可以帮我吗?为什么某些代码行在循环后不能执行?

function jsonFlickrApi(data) { 
    if (data.stat != 'ok') { 
     alert('no image loaded'); 
    } else { 
     for (var i = 0; i <= data.photos.photo.length; i++) { 
      addImage(data.photos.photo[i].url_o); 
      var lat = data.photos.photo[i].latitude; 
      var lon = data.photos.photo[i].longitude; 
      var LatLon = { 
       lat: parseFloat(lat), 
       lng: parseFloat(lon) 
      }; 

      var markers = new google.maps.Marker({ 
       'position': LatLon, 
       'map': map, 
      }); 

      console.log("i", i); 
      photoMarkers.push(markers); 
      //It still executes well here. 
     }; 
     //After the loop is finished, it doesn't print out anything to the console. 
     console.log("here"); 
    }; 
    //The following line doesn't execute too 
    fitMap(photoMarkers); 

} 

回答

3

该循环没有完成,它会引发异常。打开Web控制台看到的细节,你会发现这样的:

 
Uncaught TypeError: Cannot read property 'url_o' of undefined 

数组索引是通过0length-1,所以你希望你的for循环是< data.photos.photo.length,不<= data.photos.photo.length。在<=循环的最后一次迭代中,data.photos.photo[i]undefined,所以试图获得data.photos.photo[i].url_o的值抛出。

+1

非常感谢,它帮助我很多:) –