11

javascriptでイベントループがどのように機能するのだろうか、私はnode.jsを使用していますが、同じ質問がブラウザにも当てはまると思います。

setTimeoutいくつかの非同期呼び出しがあり ( or$.ajaxまたは またはとしましょうfs.readFile)、しばらくするとイベントループが実行されますcallback

callback実行されると、舞台裏で何が起こるでしょうか? 非同期のものを呼び出したときに使用したスタックを復活させますか?

実際には、コールバックが生きているコンテキスト/これは何ですか? そしてそれはどのように機能しますか?

編集:ありがとう、なるほど..もう1つ問題があります。イベントループはどのようにしてコールバックのスコープを「記憶」しますか?

4

2 に答える 2

2

JavaScript は関数スコープを使用します。スコープ規則はすべての JS 環境で同じです。Nican が述べたように、クロージャーを理解することは、現在のスコープで何が利用できるかを知るために重要です。

基本的に、関数はそれが定義された環境を「記憶」します。したがって、コールバックにインライン匿名関数を使用すると、親関数で使用できるすべての変数と、引数として渡されるすべてのものにアクセスできます。

JavaScript のクロージャーとスコープに関するいくつかのリソース:

Stoyan Stefanov の著書Object-Oriented JavaScriptは、JavaScript のスコープと、関数のレキシカル スコープがどのように機能するかを説明しています (第 4 章を参照)。JS プログラミングに真剣に取り組んでいる人には、この本をお勧めします。

于 2011-06-25T06:59:32.650 に答える