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

青灯夜游
リリース: 2019-01-05 10:46:27
転載
4322 人が閲覧しました

ブラウザは 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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート