検索
ホームページウェブフロントエンドhtmlチュートリアルフロントエンドの基本的な高度な変数オブジェクトの詳細な説明

フロントエンドの基本的な高度な変数オブジェクトの詳細な説明

Jun 20, 2017 am 09:50 AM
フロントエンド変数ベース物体高度な

年明けから仕事に対する熱意があまり高くなく、最近は無気力な状態が続いております。朝起きたくない、起きても仕事に行きたくない。当然、休暇前も私の仕事への熱意は非常に高く、小さなプログラムのプロジェクトについて考えていましたが、休暇から戻った後の私の仕事のスタイルはまったく異なりました。重度のホリデー後症候群にかかっているような気がします。幸いなことに、今週は完全に無駄ではなかったことを示すためにいくつかの記事を書きました。この記事では、変数オブジェクトについて紹介します。 JavaScript では必然的に変数や関数を宣言する必要がありますが、JS パーサーはどのようにしてこれらの変数を見つけるのでしょうか?また、実行コンテキストについてさらに理解する必要があります。 前回の記事では、関数が呼び出される (アクティブ化される) と、新しい実行コンテキストが作成されることをすでに知っていました。実行コンテキストのライフサイクルは 2 つの段階に分けることができます。

  • 作成フェーズ
    このフェーズでは、実行コンテキストは変数オブジェクトを作成し、スコープチェーンを確立し、この

  • コード実行フェーズ
    のポイントを決定します。作成が完了すると、コードが開始されますを実行すると、この時点で変数の代入や関数の参照などのコードの実行が完了します。


実行コンテキストのライフサイクル

ここから、実行コンテキストには変数オブジェクト、スコープチェーン、thisなどが含まれるため、実行コンテキストを詳細に理解することが非常に重要であることがわかります。多くの人は理解していませんこれは非常に重要な概念なので、JavaScript を本当に理解できるかどうかに関係します。以下の記事で 1 つずつ詳しくまとめます。ここでは、まず変数オブジェクトを理解することに焦点を当てます。

変数オブジェクト

変数オブジェクトの作成は、以下のプロセスを順に経ていきます。

  1. 引数オブジェクトを作成します。現在のコンテキストのパラメータを確認し、オブジェクトの下に属性と属性値を確立します。

  2. 現在のコンテキストの関数宣言、つまり function キーワードを使用して宣言された関数を確認します。変数オブジェクトに関数名を含む属性を作成します。属性値は、関数が配置されているメモリ アドレスへの参照です。関数名属性がすでに存在する場合、その属性は新しい参照によって上書きされます。

  3. 現在のコンテキストで変数宣言を確認し、変数宣言が見つかった場合は、変数オブジェクト内にその変数名を持つ属性を作成します。属性値は未定義です。変数名の属性が既に存在する場合、同名の関数が未定義に変更されるのを防ぐため、そのままスキップされ、元の属性値は変更されません。


テキストを読むのが好きではない人もいると思います

このルールによれば、変数のプロモーションを理解するのが非常に簡単になります。変数プロモーションについては多くの記事で言及されていますが、多くの人は実際にはそれが何であるかを実際には理解できません。将来的には、変数オブジェクトの作成プロセスを使用して、面接中に変数プロモーションを面接官に説明し、即座に改善できるようにします。

上記のルールでは、関数宣言が var 宣言よりも高い優先順位を持っていることがわかります。誰もが変数オブジェクトをよりよく理解できるように、いくつかの簡単な例を使用して変数オブジェクトについて説明します。

// demo01function test() {console.log(a);console.log(foo());var a = 1;function foo() {return 2;
    }
}

test();

上記の例では、test() の実行コンテキストから直接理解し始めます。 test() をグローバル スコープで実行すると、test() の実行コンテキストが作成され始めます。理解を容易にするために、次の形式を使用して表現します

创建过程
testEC = {// 变量对象    VO: {},    scopeChain: {},    this: {}
}// 因为本文暂时不详细解释作用域链和this,所以把变量对象专门提出来说明// VO 为 Variable Object的缩写,即变量对象
VO = {    arguments: {...},  //注:在浏览器的展示中,函数的参数可能并不是放在arguments对象中,这里为了方便理解,我做了这样的处理    foo: <foo reference>  // 表示foo的地址引用    a: undefined
}

実行フェーズに入る前は、変数オブジェクト内の属性にアクセスできません。ただし、実行フェーズに入ると、変数オブジェクトはアクティブ オブジェクトに変換され、内部のプロパティにアクセスできるようになり、実行フェーズの操作が開始されます。

このように、インタビュー中に変数オブジェクトとアクティブオブジェクトの違いについて質問された場合、実際には同じオブジェクトですが、実行コンテキストのライフサイクルが異なりますので、自由に答えることができます。

// 执行阶段VO ->  AO   // Active ObjectAO = {
    arguments: {...},
    foo: <foo reference>,
    a: 1
}

つまり、上記の例demo1では、実行シーケンスは次のようになります

function test() {function foo() {return 2;
    }var a;console.log(a);console.log(foo());
    a = 1;
}

test();

理解を定着させるために別の例を見てみましょう。

// demo2function test() {console.log(foo);console.log(bar);var foo = &#39;Hello&#39;;console.log(foo);var bar = function () {return &#39;world&#39;;
    }function foo() {return &#39;hello&#39;;
    }
}

test();
rreerreeee

上記の知識を組み合わせて、この例の作成段階から実行段階までの変数オブジェクトの変更を注意深く比較する必要があります。すでに理解している場合は、変数オブジェクトに関連するすべてのことはもう難しくないことを意味します。あなたのために。

グローバルコンテキストの変数オブジェクト

ブラウザを例に挙げると、グローバルオブジェクトはウィンドウです。
グローバル コンテキストには特別な場所があり、その変数オブジェクトはウィンドウ オブジェクトです。この特集は窓にも当てはまります。

// 创建阶段VO = {
    arguments: {...},
    foo: <foo reference>,
    bar: undefined
}
// 这里有一个需要注意的地方,因为var声明的变量当遇到同名的属性时,会跳过而不会覆盖

さらに、グローバル コンテキストのライフ サイクルは、プログラムのライフ サイクルと一致します。ブラウザ ウィンドウを閉じるなど、プログラムが終了しない限り、グローバル コンテキストは常に存在します。他のすべてのコンテキストは、グローバル コンテキストのプロパティに直接アクセスできます。

以上がフロントエンドの基本的な高度な変数オブジェクトの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
HTML:それはプログラミング言語か何か他のものですか?HTML:それはプログラミング言語か何か他のものですか?Apr 15, 2025 am 12:13 AM

htmlisnotaprogramminglanguage; itisamarkuplanguage.1)htmlStructuresandformatswebcontentusingtags.2)ItworkswithcsssssssssdjavascriptforInteractivity、強化を促進します。

HTML:Webページの構造の構築HTML:Webページの構造の構築Apr 14, 2025 am 12:14 AM

HTMLは、Webページ構造の構築の基礎です。 1。HTMLは、コンテンツ構造とセマンティクス、および使用などを定義します。タグ。 2. SEO効果を改善するために、などのセマンティックマーカーを提供します。 3.タグを介したユーザーの相互作用を実現するには、フォーム検証に注意してください。 4. JavaScriptと組み合わせて、動的効果を実現するなどの高度な要素を使用します。 5.一般的なエラーには、閉じられていないラベルと引用されていない属性値が含まれ、検証ツールが必要です。 6.最適化戦略には、HTTP要求の削減、HTMLの圧縮、セマンティックタグの使用などが含まれます。

テキストからウェブサイトへ:HTMLの力テキストからウェブサイトへ:HTMLの力Apr 13, 2025 am 12:07 AM

HTMLは、Webページを構築するために使用される言語であり、タグと属性を使用してWebページの構造とコンテンツを定義します。 1)htmlは、などのタグを介してドキュメント構造を整理します。 2)ブラウザはHTMLを分析してDOMを構築し、Webページをレンダリングします。 3)マルチメディア関数を強化するなど、HTML5の新機能。 4)一般的なエラーには、閉じられていないラベルと引用されていない属性値が含まれます。 5)最適化の提案には、セマンティックタグの使用とファイルサイズの削減が含まれます。

HTML、CSS、およびJavaScriptの理解:初心者向けガイドHTML、CSS、およびJavaScriptの理解:初心者向けガイドApr 12, 2025 am 12:02 AM

webdevelopmentReliesOnhtml、css、andjavascript:1)htmlStructuresContent、2)cssStylesit、および3)Javascriptaddsinteractivity、形成、

HTMLの役割:Webコンテンツの構造HTMLの役割:Webコンテンツの構造Apr 11, 2025 am 12:12 AM

HTMLの役割は、タグと属性を使用してWebページの構造とコンテンツを定義することです。 1。HTMLは、読みやすく理解しやすいようなタグを介してコンテンツを整理します。 2。アクセシビリティとSEOを強化するには、セマンティックタグなどを使用します。 3. HTMLコードの最適化により、Webページの読み込み速度とユーザーエクスペリエンスが向上する可能性があります。

HTMLとコード:用語を詳しく見るHTMLとコード:用語を詳しく見るApr 10, 2025 am 09:28 AM

htmlisaspecifictypeofcodefocuseduructuringwebcontent

HTML、CSS、およびJavaScript:Web開発者に不可欠なツールHTML、CSS、およびJavaScript:Web開発者に不可欠なツールApr 09, 2025 am 12:12 AM

HTML、CSS、およびJavaScriptは、Web開発の3つの柱です。 1。HTMLは、Webページ構造を定義し、などなどのタグを使用します。2。CSSは、色、フォントサイズなどのセレクターと属性を使用してWebページスタイルを制御します。

HTML、CSS、およびJavaScriptの役割:コアの責任HTML、CSS、およびJavaScriptの役割:コアの責任Apr 08, 2025 pm 07:05 PM

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール