2017-04-21 23 views
1

HTMLページのコードでは、「試してください」ボタンをクリックすると、Googleマップがウィンドウに表示され、ユーザーの場所を中心に表示されます。これは、getLocation()を呼び出すことによって行います。これは、次にshowPosition()を呼び出します。しかし、パラメータラインに関数が引数として渡されたとき、その関数にはどのようにパラメータが渡されますか?

navigator.geolocation.getCurrentPosition(showPosition); 

に合格し、showPositionがパラメータを受け入れるように定義されているがありません。以下のコードはこれを示しています。実験中に、定義からパラメータを削除してコードを修正しましたが、マップは表示されなくなりました。以下のコードは、のマップを示すバージョンです。

<button onclick="getLocation()">Try It</button> 

<script> 
var x = document.getElementById("demo"); 

function getLocation() { 
    if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(showPosition); 
} else { 
    x.innerHTML = "Geolocation is not supported by this browser."; 
} 


function showPosition(position) { 
    var mapProp= { 
    center:new google.maps.LatLng(position.coords.latitude, position.coords.longitude), 
    zoom:13, 
    }; 
    var map=new google.maps.Map(document.getElementById("googleMap"),mapProp); 
} 
</script> 

私はこれを見て非常に好奇心です。 showPosition()に渡されていないときに、パラメータ "position"はどのようにアクセスされますか?誰かが理由を説明できるなら、私はとても感謝しています。

+1

これはコールバック関数です。メソッドgetCurrentPositionの詳細はこちら(https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition)、それはJavaScriptなので、コールバックを読むことは不可欠です –

+0

あなたの質問は、「ポ​​イントフリー」スタイルへの軽い導入と見なすことができます。以下に、より詳細な例を示します。楽しい! http://lucasmreis.github.io/blog/pointfree-javascript/ –

答えて

0

getCurrentPositionは、コールバック関数showPositionを使用しています。つまり、それを呼び出して、最初の引数としてpositionを提供します。引数をshowPositionに指定する場合は、戻り値をgetCurrentPositionが使用します。

0

投稿したコードでShowPositionが呼び出されていません。 navigator.geolocation.getCurrentPosition(showPosition);は、関数 showPositionをgetCurrentPositionに渡しています。 getCurrentPositionはコード内でshowPositionを呼び出したり、別の関数に渡したりすることができます

0

geolocation.getCurrentPositionのドキュメントを見ると、最初のパラメータが成功のコールバック関数であることがわかります。これは、ユーザの位置が決定されたときにgetCurrentPositionが関数を実行して渡すことを意味します。次に、その値をそのコールバック関数に渡します。この例では、showPositionです。

0

https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition

getCurrentPositionの引数が関数です。 Javasciptでは、関数は「ファーストクラスの市民」であり、このような引数として渡すことができます。

ドキュメントが動作getCurrentPosition方法は、それが(この場合には、それが機能showPositionある)コールバックパラメータsuccessを受け入れ、それが位置を有する場合、位置パラメータでその関数を呼び出すことであると述べています。それはshowPositionがその引数を取る方法です。

これは、非同期関数を扱うJavascriptの非常に一般的なパターンです。 getCurrentPositionは実行に時間がかかる可能性があるため、呼び出す代わりに戻り値の準備が完了するのを待たずに関数に渡します。次に、準備ができたら結果を含む関数を呼び出します。

0

navigator.gelocation.getCurrentPositionの最初の引数は、関数showPositionです。この時点で実際にはshowPositionを呼び出すのではなく、パラメータとして送信するだけです。あなたは、おそらくこのような何かを見て可能性があり、getCurrentPositionの定義を見ることができないので、あなたが混乱している理由は次のとおりです。

私は実際にcurrentPositionがどのようなものか分からない。もちろん、
function getCurrentPosition(callbackFunction) { 
    var position = {}; 
    callbackFunction(position) 
} 

、私はちょうどshowPositionがそれからどのように引数を受け取ることができるかを示すためにそれを使用します。

関連する問題