JavaScriptのvarを使用して変数の範囲を理解していないので、その変数への参照が見つかるまで範囲内に入り、グローバルスコープに当たると変数を作成します。コールバック関数内でvarで宣言されていない変数の再割り当て
私の質問は、このコードでは、これの出力は0 0 1ですが、私のロジックがどこまでうまくいかないのか分かりません。
私の頭が最初に見つかったのは0であると宣言されています。そして、varで宣言されていないので、スコープが上がるにつれてグローバル変数になります。現在見つかっているのは0です。
最初のif文の後に出力されます。したがって、0になっています。
次に、getMyLocation関数のコールバック関数の外側に見つかるまで、見つかったスコープがスコープに上がることはありません。
次に、1を印刷してからコードブロックの外に出たら、再び1を印刷して0 1を得ると仮定します。私が間違っていると理解しています。
<script>
function getMyLocation() {
found = 0;
if (navigator.geolocation) {
console.log(found);
navigator.geolocation.getCurrentPosition(function(position) {
found = 1;
console.log(found);
});
}
console.log(found);
}
</script>
* var *(または* let *または* const *)のない変数を初期化することは**宣言していません**。 ;-) – RobG
'navigator.geolocation.getCurrentPosition()'に渡された関数は、結果を非同期的に – guest271314
@ guest271314返しますが、その関数内で見つかったconsole.logは、その関数内で1に設定されたコールバックではありません。 – Malcolm