ホームページ  >  記事  >  ウェブフロントエンド  >  ブラウザはどのようにして JavaScript を解析するのでしょうか?分析原理の紹介

ブラウザはどのようにして JavaScript を解析するのでしょうか?分析原理の紹介

青灯夜游
青灯夜游転載
2019-01-05 10:46:274312ブラウズ

ブラウザは JavaScript をどのように解析しますか?この記事では、ブラウザの JavaScript 解析の原理について説明します。必要な方は参考にしていただければ幸いです。 [推奨ビデオ チュートリアル: JavaScript ビデオ チュートリアル]

ブラウザ解析 JavaScript の基本機能:

1. クロスプラットフォーム

2. 弱い型の JavaScript を定義する場合、データ型を定義する必要はありません。

var a = 10; //数字类型
var a = true //boolean类型

(強い型: 変数を定義する場合)。 、変数の型を定義する必要があります。たとえば、Java、C# では int a = 10 boolean a = true はデータ型を直接決定します)

3.一行ずつ

javascript 実行プロセス

#1. 文法検出

基本的な文法があるかどうかを確認します。中国語、キーワード エラーなど...

2. 字句解析 (コンパイル前)

3. 行ごとに実行します。字句解析

コンパイル前プロセス (2 つの状況)

1. グローバル

(関数の実行を除く、スクリプト タグ内のコード)

次のデモを例に挙げます:

 console.log(a); console.log(b)
 var a = 100;
 console.log(a) var b = 200 var c = 300 function a(){
                
 } function fun(){
                
 }
実行前:

1)、最初に GO (グローバル オブジェクト) オブジェクトを生成します。これは目に見えませんが、表示できます。分析のためにシミュレートされる

GO = {                //自带的属性都不写
    }
2)、分析

変数宣言

、変数名は属性名、値は未定義です。

GO = {
                    a : undefined,
                    b : undefined,
                    c : undefined
    }
3)、関数宣言を分析します、関数名が属性名、値が関数本体、関数名と変数名が同じ場合は容赦なく上書きされます
GO = {
    a : function a(){
                
    },
    b : undefined,
    c : undefined,
    fun : function fun(){
                
    }
}
このとき、GOは最後のオブジェクトです。プリコンパイルされ、字句解析が完了します。

4)、一行ずつ実行、解析(変数宣言、関数宣言)、気にせず値の代入(変数代入)だけ

a赋了一次值,值改变为100
      GO = {
          a : 100,
          b : undefined,
          c : undefined,
          fun : function fun(){
                
             }
        }

2

,

ローカル (関数の実行時) このデモを例として取り上げます:

 num = 100510)
1)、プリコンパイル時

GO = {
       num : undefined,
       fun : function
    }
2)、実行プロセス

GO = {
                num : 100,
                fun : function
            }
3) 関数呼び出しは独自のスコープ (AO: アクティブ オブジェクト) も生成します。関数が呼び出されるとき、実行の直前に AO アクティブ オブジェクトが生成されます。複数の関数を呼び出すと、複数の AO

ⅰ が生成されます。関数が実行される直前に、AO アクティブ オブジェクト

fun.AO = {
                
            }
ii が生成されます。パラメータは仮パラメータとして使用されます。変数名がオブジェクトの属性名であり、値が未定義の場合は、実際のパラメータがオブジェクトの属性値として使用されます。 AO オブジェクトに同じ名前のプロパティがある場合は、何も変更しないでください。関数名は属性名であり、値は関数本体です。 AO オブジェクト上で同じ名前の属性が見つかった場合、容赦なく上書きされます (ここには関数宣言がありません。スキップしてください)

4) 1 行ずつ実行

例:


ここではいくつかの例を見ていきます:

例 1:

fun.AO = {
                num : 5
            }

例 2:

fun.AO = {
                num : 5
            }
以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。さらにエキサイティングなコンテンツについては、PHP 中国語 Web サイトの関連チュートリアルのコラムに注目してください。 ! !

以上がブラウザはどのようにして JavaScript を解析するのでしょうか?分析原理の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。