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

不言
リリース: 2019-02-28 13:30:17
転載
2689 人が閲覧しました

この記事では、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 までご連絡ください。
最新の問題
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!