ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript実行時の「プリコンパイルフェーズ」と「実行フェーズ」 process_javascriptスキル

JavaScript実行時の「プリコンパイルフェーズ」と「実行フェーズ」 process_javascriptスキル

WBOY
WBOYオリジナル
2016-05-16 15:25:262084ブラウズ

他の言語と比較して、JavaScript は型指定が弱い言語です。Java などの他の言語では、プログラムの実行にはコンパイル段階が必要であり、JavaScript にも同様の「コンパイル前段階」があります。 -コンパイル段階)。コンパイルはコード ブロック3f1c4e4b6b16bbbd69b2ee476dc4f83a2cacc6d41bbb37262a98f745aa00fbf0に基づいています。つまり、コード ブロックが検出されるたびに、そのコード ブロックがプリコンパイル>実行されます)。 js コードを書く過程で役立つアイデアのまとめ

まず、JavaScript の 2 つの宣言メソッド、var と function について学びましょう。前者は変数を宣言し、後者はメソッドを宣言します。

プリコンパイルでは、JavaScript はこれら 2 つの宣言に対して 2 つの処理ソリューションを作成します

<script>
  var a = "1";    //声明变量a
 function b(){    //声明方法b
    alert();
  }
  var c = function(){ //声明变量c
    alert();
  }
</script> 

上記のコード ブロックでは、a と c は変数の代入で、b は関数の宣言です。上記のコードが実行されると、まず a と c を変数に代入することによって a が開きます。メモリ内のメモリ空間と変数名を指し、代入される値は未定義です

関数宣言の場合、メモリ空間も割り当てられますが、割り当てられたオブジェクトは宣言された関数を関数名に割り当てます

プリコンパイルフェーズ: (追記: コード内で変数と関数が宣言される順序に関係なく、プリコンパイルフェーズでは変数が最初に宣言され、次に関数が宣言されます)

<script>
    var a = undefined;
    var c = undefined;         var b = function(){
      alert();
    } </script> 

実行フェーズ:

<script>
    a = "1";
    c = function(){
      alert();
    }
</script> 

全体的な実行手順:

<script>
    var a = undefined;
    var c = undefined;
    
    var b = function(){
      alert();
    }
    a = "1";
    c = function(){
      alert();
    }
</script> 

タイトル:

<script>
    var a = "1";
    function b(){
      alert(a);
      var a = "2";
    }
    b();
</script> 

ps: JavaScript のプリコンパイル

1. 最初に変数を事前定義し、次に関数を事前定義します

2. 変数のプリコンパイルは変数を宣言するだけで初期化はせず、実行中に初期化します

3. function ステートメントで定義された関数は、関数名を宣言するだけでなく、関数本体の処理も行います

4. 匿名関数はプリコンパイルされません

function f(){      // 声明函数f  
return 1; } alert(f());       // 返回1 
var f = function(){    // 定义匿名函数f  
return 2; } alert(f());       // 返回2 

変数 f が最初に事前定義され、次に同じ名前の関数 f() が変数 f を上書きするため、初めて 1 が出力されます。変数のプリコンパイル

var f = function(){    // 定义匿名函数f  
return 1; } 
alert(f());       // 返回1 
function f(){      // 声明函数f  
return 2; } 
alert(f());      // 返回1 

最初に変数 f が事前定義され、次に同じ名前の関数 f() が変数 f を上書きします。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。