[解決済み] JavaScriptの「実行コンテキスト」とは何ですか?
質問
私のタイトルがすべてを表していますね。
どなたか教えてください...
"JavaScriptにおける「実行コンテキスト」とは何でしょうか。
そして、それがどのように 'this', hoisting, prototype chaining, scope, garbage collection に関連するのかについて教えてください。
どのように解決するのですか?
あまり密接に関連しないいくつかの異なる概念について質問されています。 それぞれについて簡単に説明します。
実行コンテキスト
は言語仕様における概念で、平たく言えば、関数が実行される「環境」とほぼ同じです。
スコープ チェーン
で、外部スコープからクロージャ内の変数)、関数の引数、そして
this
オブジェクトの値です。
は コールスタック は実行コンテキストの集合体です。
範囲 は文字通り、変数にアクセスできるスコープを表します。 単純化すると
var x;
function a() {
var y;
}
x
はどこからでもアクセスできます。 いつ
a
が呼び出されると
x
は外部スコープになります。 (に格納される)。
スコープチェーン
.)
これに対して
y
の中のコードからのみアクセス可能です。
a()
に限定されるため
a
のスコープに限定されるからです。 これが
var
キーワードは、変数をローカルスコープに制限するものです。 もし
var
,
y
で終わってしまうので
グローバルスコープ
になってしまうので、一般に悪いことだと考えられています。
考える 吊り上げる はどちらかというとコンパイル時のものだと考えてください。 JavaScript では、関数 宣言 はスコープの一番上に表示されます。 言い換えれば、それらは解析され評価されます。 の前に の前に解析され評価されます。 (これは関数 式 とは対照的です)。 以下を考えてみましょう。
a();
b();
function a() { }
var b = function() { }
の呼び出しは
a()
の呼び出しは、その宣言がトップに持ち上げられたので成功します。
a
はプログラムの実行が始まる前に自動的に割り当てられたからである。 の呼び出しは
b()
を呼び出すと失敗します。
TypeError
なぜなら
b
は4行目まで定義されないからです。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] GUID / UUIDの作成方法
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] JavaScriptのオブジェクトをループスルーまたは列挙するにはどうすればよいですか?
-
[解決済み] JavaScriptで二重引用符と単一引用符はいつ使うべきですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み] Google maps API V3 - 同一地点に複数のマーカーを設置する。
-
[解決済み] javascript includes() 大文字小文字を区別しない
-
[解決済み] これは純関数ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] URL/アドレスバーからJavascriptの関数を呼び出す
-
[解決済み] アサインの左側にJavascriptのオブジェクトブラケット表記({ ナビゲーション } =)があります。
-
[解決済み] JavaScriptのtoString()関数をオーバーライドして、デバッグ用に意味のある出力を提供することは可能でしょうか?
-
[解決済み] jQueryの$という記号の意味は何ですか?
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
-
[解決済み] ECMAScriptとは?
-
[解決済み] なぜjavascriptのES6 Promisesはresolve後も実行を継続するのですか?
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行
-
[解決済み] 変異を伴わないオブジェクトからの値の削除
-
[解決済み] Javascript: ステートメントとエクスプレッションの違い?