ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptのスコープチェーンと実行環境の紹介(画像とテキスト)

JavaScriptのスコープチェーンと実行環境の紹介(画像とテキスト)

不言
不言転載
2019-02-28 13:30:082854ブラウズ

この記事では、JavaScript のスコープ チェーンと実行環境について説明します (写真とテキスト)。必要な方は参考にしていただければ幸いです。 。

各関数には [[Scope]] 内部プロパティがあり、関数が作成されたスコープ内のオブジェクトのコレクションが含まれます。このコレクションは関数のスコープ チェーンです。たとえば、次のグローバル関数:

fucntion add(num1, num2){
    var sum = num1 + num2;
    return sum;
}

関数 add が作成されると、オブジェクト変数がそのスコープ チェーンに挿入されます。このスコープ チェーンには、グローバル スコープで定義されたすべての変数が含まれます。

JavaScriptのスコープチェーンと実行環境の紹介(画像とテキスト)

関数 add のスコープは、関数が実行されるたびに、実行環境の内部オブジェクトが作成されます。各実行環境には独自のスコープ チェーンがあります。関数が実行されると、アクティブ オブジェクトと呼ばれる新しいオブジェクトが実行環境用に作成されます。このオブジェクトには、関数のすべてのローカル変数、名前付きパラメーター、パラメーター コレクションなどが含まれます。 var total = add(5,10) が実行され、対応するスコープ チェーンが次のようになっているとします。

JavaScriptのスコープチェーンと実行環境の紹介(画像とテキスト)

関数の実行中、変数の検索はスコープから開始されます。 head 検索し、見つかった場合はミューテーターの値を使用します。見つからない場合は、変更が見つかるまでスコープ内の次のオブジェクトから検索を続けます。一致するものが見つからない場合は、未定義になります。グローバル変数を頻繁に使用する場合は、ローカル変数を使用してグローバル変数を保存し、その後ローカル変数に直接アクセスすることで検索回数を減らし、効率を向上させることができます。例:

function initUI(){
    var doc = document,
        bd = doc.body,
        links = doc.getElementsByTagName("a");
    ....
}

関数の実行が完了すると、アクティブなオブジェクトも破棄されます。ただし、閉じても、アクティブなオブジェクトは破棄されません。これが、クロージャが多くのメモリを消費する理由でもあります。


以上がJavaScriptのスコープチェーンと実行環境の紹介(画像とテキスト)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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