undefined
が私のコンソールに表示される理由はわかりません。私はスコープ変数について読んで、スコープ外の変数を定義すると、その変数を特定の関数スコープ外にアクセス可能にする必要があることを知ります。 ない私がここで間違ってやっていることを確認:マイコンソールは、それが値を割り当てられている前に、あなたがloc
をログに記録されているbeacuseつまりundefined
未定義の値、可変スコープの問題
答えて
をログに記録され
const history = createHistory();
const location = history.location;
let loc;
const listen = history.listen((location) => {
loc = `${location.search}${location.hash}`;
return loc;
})
console.log(loc);
。値がundefined
になるように初期化されます。 listenに渡されたコールバックが呼び出されたときに値が割り当てられます。私はあなたが本当にそれを返すか、あなたの質問に説明する方法を使用することはできません。この文脈でそうlisten
は、asynchronusであることを前提としてい
const history = createHistory();
const location = history.location;
let loc;
const listen = history.listen((location) => {
loc = `${location.search}${location.hash}`;
console.log(loc);
})
:あなたがあなたのコードを変更する必要があり、正しい値をログに記録します。しかし、いったんlisten
コールバックにいれば、その値を他のコールバックに渡すことができます。詳細な説明と例は、How do I return the response from an asynchronous call?を参照してください。
お返事ありがとうございます!ここでの問題は、 'listen'関数の外側で' loc'を使いたいということです。現在、私は単純化のためにconsole.logしか持っていません。しかし、私がしたいのは、 'listen'の中で' log'に値を代入すれば、リストの外側に 'loc'をその値で使いたいということです。それは可能ですか? – vanegeek
console.log(loc);
の時点で、その変数は定義されていません。この機能として
(location) => { loc = `${location.search}${location.hash}`; }
はそれの後に実行されます。
location.listenメソッドは、場所が変更されたときにのみ呼び出されるという問題があります。 history.listen(...)呼び出しは、履歴が変更されたときに呼び出されるコードを宣言しますが、その時点でそのコードはまだ実行されていません。ここで擬似コードで
は、あなたが指示したものである:
- 歴史はまだ(の値をプリントアウト
- を変更したときに実行されるいくつかのコードを登録し、いくつかの定数と変数
- を宣言コンソールに初期化されていない)変数
これは、あなたが何を意味するかに近いかもしれません:
const history = createHistory();
const location = history.location;
let loc;
const listen = history.listen((location) => {
loc = `${location.search}${location.hash}`;
console.log(loc);
})
残りの部分は、loc
の位置を変更するまで変数に値が割り当てられないため、リッスン方法が実行されます。それまでは、その値はundefined
になります。また、変数を持っていて、コードの上に宣言したときに返される値がloc
になるのはなぜですか?
- 1. Javascript可変スコープの問題
- 2. jquery可変スコープの問題
- 3. Select2未定義の問題
- 4. AngularJSアプリケーションの未定義スコープ変数
- 5. Pythonでの可変スコープの問題
- 6. スーパーオブジェクトの可変スコープの問題
- 7. 未定義シンボル:mysql_options問題
- 8. 配列未定義問題
- 9. Fortran可変スコープでの問題
- 10. 未定義の問題があります!==未定義
- 11. ng-リピートdupesと$スコープ変数未定義
- 12. $ .postから値を返す際の可変スコープの問題
- 13. 未定義のメソッドの問題
- 14. PHPで未定義のインデックスデータベースの問題
- 15. PHPリストの問題(未定義オフセット:)
- 16. HubClassがクラスライブラリで未定義の問題
- 17. SELECT COUNTと未定義オフセットの問題
- 18. PHP $ _GETと$ _POST未定義の問題
- 19. エラースコープと未スコープのbigqueryの問題
- 20. 定義されていないオフセットと未定義の変数の問題
- 21. 未定義の変数を持つCシェルの問題
- 22. codeigniterで未定義の変数の問題
- 23. 未定義変数の問題が発生しました
- 24. PHP関数 - 通知:未定義の変数問題
- 25. JavaScript未定義IE6の可変エラー
- 26. 未定義のメソッド `default_scoped? 'スコープにアクセス中
- 27. Javascript可変スコープの質問
- 28. varが未定義になる問題
- 29. 問題:未定義シンボル:行0
- 30. Google Chart IE9問題(未定義)
'location'は' window'のグローバル変数です。これは 'window.location'または単に' location'でアクセスすることができます。 – JohnnyCoder