未捕获的TypeError:无法读取未定义的common.js的属性"x"

Gor*_*ora 1 javascript google-maps-api-3

我正在使用谷歌地图api v3并在使用时遇到此错误

map.fitBounds(边界); 功能

这是控制台上的错误快照 在此输入图像描述

以下是代码:

var arr = [{lat: -25.363, lng: 131.044}, {lat: 12.97, lng: 77.59}];
for (i = 0; i < arr.length; i++) {
    bounds.extend(new google.maps.LatLng(arr[i]));
}
map.fitBounds(bounds); //If I comment this line in m code, the error is gone but map does not load.
Run Code Online (Sandbox Code Playgroud)

问题是什么?另外我该如何解决?

小智 10

我的猜测是,你的代码中某处self = this没有var声明.

当您忘记var正在创建全局变量时 - 或者在这种情况下,将全局重新定义self为本地函数.这将导致谷歌地图代码中的打嗝,该代码期望self成为Window并导致Uncaught TypeError: Cannot read property 'x' of undefined(…)

这种错误是一些开发人员更喜欢使用that或使用其他术语而不是self范围控制的原因.如果你是一个超级细心的编码员,永远不会忘记你的var声明,你会没事的.但是对于那些偶尔陷入困境的人来说,使用that可以节省数小时令人沮丧的调试.*

那些超级细心的程序员会说我们应该花费数小时令人沮丧的调试,因为我们不小心 :)

  • 如果你对谁是"自我"感到困惑,只需在错误中添加一个breackpoint并在chrome控制台中输入"self". (2认同)