実装と実行のコンテキストを理解するコンテキストをスタック

JavaScriptが実行されている場合は、常にこのようなコードを実行するために「ピース単位」になります

VaRのFOO =関数(){ 

    にconsole.log( 'foo1の')。

} 

のfoo(); // foo1の

VARのFOO =関数(){ 

    にconsole.log( 'foo2は')。

} 

のfoo(); // foo2は

  

関数foo(){ 

    にconsole.log( 'foo1の')。

} 

のfoo(); // foo2は

関数foo(){ 

    にconsole.log( 'foo2は')。

} 

のfoo(); // foo2は

  

我々はコードの一部を実行すると、このような可変リフト、機能、および改善の第二の例の最初の例として、「準備作業」、あろう。

 

変数があったように、このような行動のコードの実装準備作業は、機能が向上し、この時間は、実行コンテキスト(公式声明)と呼ばれたときに戻る、私は、コードの実装は、コードがES規格に準拠させるために変数と関数を分析することを理解します

 

実行コンテキストは、それをスタック?

JavaScriptエンジンは、実行コンテキストを管理するために実行コンテキストスタック(実行コンテキスト・スタック、ECS)を作成します

スタックは、データ構造は、最後のアウト、毎回、そのようにコードが最初に最後の外で実行されます。

以下の

関数fun3(){ 
    にconsole.log( 'fun3')
} 

関数fun2(){ 
    fun3()。
} 

関数FUN1(){ 
    fun2()。
} 

FUN1()。

  

//擬似コード

// FUN1()
ECStack.push(<FUN1> functionContext); 

// FUN1は、これまでfun2を呼び出すことが、またの実行コンテキスト・fun2作成するとして行ってきました
ECStack.pushを(<fun2> functionContext); 

//こする、fun2をまたfun3呼ばれます!
ECStack.push(<fun3> functionContext); 

//はfun3完了実行
ECStack.popを(); 

//はfun2完了実行
ECStack.popを(); 

//はFUN1完了実行
ECStack.popを(); 

//その後、次のJavaScriptを実行しますコードが、基礎となるECStack globalContextが常にあります

  

おすすめ

転載: www.cnblogs.com/qqfontofweb/p/11932826.html