blog

Jsのスコープとスコープチェーン

スコープの分類 1、語彙的スコープ/静的スコープ:js使用 2、動的スコープ:bash使用 スコープの連鎖 変数を探す場合、まず現在のコンテキストから変数オブジェクトを探し、見つからなければ変数の親コ...

Sep 22, 2020 · 2 min. read
シェア

スコープ分類

1, レキシカルスコープ / スタティックスコープ: js use

2、ダイナミックスコープ:バッシュ使用

スコープチェーン

変数を探すときは、まず現在のコンテキストにある変数オブジェクトを探し、見つからなければ親の実行コンテキストにある変数オブジェクトから、つまりグローバルコンテキストにある変数オブジェクトまで調べます。このような複数の実行コンテキストからの変数オブジェクトの連鎖をスコープチェーンと呼びます。

関数作成

関数のスコープは関数定義時に決定されます。

これは関数が内部属性[[スコープ]]を持っているためで、関数が生成されるとすべての親変数オブジェクトがその中に保存されます。[[スコープ]]はすべての親変数オブジェクトの階層的な連鎖であると理解できますが、注意:[[スコープ]]は完全なスコープ連鎖を表しているわけではありません!

一例です:

function foo() {
 function bar() {
 ...
 }
}

関数はそれぞれの[[スコープ]]で作成されます:

foo.[[scope]] = [
 globalContext.VO
];
bar.[[scope]] = [
 fooContext.AO,
 globalContext.VO
];

関数活性化

ファンクションがアクティブになると、ファンクションコンテキストに入り、VO/AOを作成した後、アクティブオブジェクトがスコープチェーンの先頭に追加されます。

Scopeという実行コンテキストのスコープチェーンが実行されるときです:

Scope = [AO].concat([[Scope]]);

この時点で、スコープチェーンが作成されます。

JavaScriptの詳細なレキシカル・スコープとダイナミック・スコープ

JavaScript実行コンテキストスタック

JavaScriptの深い変数オブジェクト

JavaScriptにおけるスコープの連鎖

JavaScriptのスコープとスコープチェーンの深い理解

JavaScriptスコープの深い理解

JavaScriptにおける静的スコープ連鎖と "動的 "クロージャ連鎖

Read next

vueカスタムディレクティブ

Vue 2.0では、コードの再利用と抽象化の主な形態はコンポーネントです。しかし、DOM要素に対してアンダーザフードの操作を行う必要がある場合もあります。 Vueインスタンス/コンポーネントは、データバインディング、イベントリスニング、DOM更新に使用されます。Vueディレクティブは、主にネイティブなDOM操作に使用されます。 DOM操作が頻繁に使用される場合は、ディレクティブとしてカプセル化できます。 ...

Sep 21, 2020 · 2 min read