This code from Google Mapsドキュメントページは私にとって非常に謎です。スニペット内の関数はオブジェクトgoogle
を参照していますが、すべてがうまく機能しています。Javascriptオブジェクトは、宣言されていないにもかかわらず関数内でしか使用できません。
オブジェクトgoogle
はグローバル関数で使用されているため、グローバルスコープに存在することが予想されます。それ以外の方法を知らない(つまり、宣言していない、つまり渡されていません)をパラメータとして
たとえば、私は
function() {
// do some calc
anotherFunction(resultOfCalc)
...
}
のようなコードを見れば、私はanotherFunction
は、少なくとも親スコープで利用可能であることを前提としています - そうでない場合はグローバルなもの。
Here is the JSFiddle for the Google code。私はそれが
VM573:66 Uncaught ReferenceError: google is not defined
at VM573:66
しかし、なぜに印刷されたコンソールにラインconsole.log("Google obj:", google);
を追加しました注意してください?コードの次の行は
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 10,
center: {lat: -33.9, lng: 151.2}
});
setMarkers(map);
}
であるとgoogle
の使用についてのcompaintはありません。
私はこの独特な動作を理解するのを手伝ってください。
myCustomFucntion
関数を呼び出しロードされた後の例loaded.for Googleのファイルの後にこの関数を呼び出すJSを生成します[** JSFiddle **](https://jsfiddle.net/)? –そこには非同期のものがいくつかありますか?おそらく、この "google"オブジェクトが非同期的にロードされ、ロードされる前にそれを使用しているのでしょうか? –
@brahimmahrirは投稿後すぐにそれを追加しました - 最初は忘れました。申し訳ありません – CodyBugstein