javascriptはコンテキスト、変数オブジェクトのインスタンス分析を実行します.
3813 ワード
本論文の実例は、javascriptがコンテキスト、変数オブジェクトを実行することを述べている.皆さんに参考にしてあげます.具体的には以下の通りです.
突然、2010年の古い文章を見ました.作者は章の形式で
リンク:ここ
翻訳したいのですが、もう作っている人がいました.ここです.本当に不遇な時に生まれた,何と残念なことか!
メモをして、心を慰めてください.
実行コンテキストExecution Contect
コントローラが
短い文章ですが、豊富な内容が含まれています.コントローラ: 変換:実行可能コードから別のセグメント実行可能コード へジャンプ実行可能コード:グローバルコード、関数コード、 実行文脈:抽象的な概念であり、ECMA-622標準はこの概念を用いて実行可能コード(executable code)概念と区別する.
実行コンテキストは論理的にスタックを構成します.スタックの底部は常にグローバルコンテキストであり、スタックの上部は現在/活動の実行コンテキストである.スタックは、ECタイプの変数(various kingds of EC)を押し入れたり、イジェクトしたりしながら修正されます.
例えば、コンテキストスタックの実行をシミュレートするための配列を定義することができる.
変数オブジェクト(VO)は、コンテキストを実行する属性として存在し、下記の内容を保存します. すべての変数宣言(var、Varable Declaration) VOの属性の一つであり、この属性は変数名とundefined値から構成される.変数名が宣言された形式のパラメータや関数と同じであれば、変数宣言は既に存在しているこれらの属性に干渉しません. 関数宣言(FuntionDeclaration、略してFDという) VOの属性は、関数オブジェクトの名前と値から構成されています.変数オブジェクトに同じ名前の属性が既に存在する場合、この属性は完全に置換されます. および関数の参照 VOの属性の一つであり、この属性は形式パラメータの名称と値からなる.転送の実際のパラメータに対応していない場合、この属性は形式パラメータの名称とundefined値から構成される.
通常、様々な文章やJavaScriptに関する書籍は、「varキーワード(グローバルコンテキストで)を使っても、varキーワードを使わない(どこでも)変数を宣言することができる」と主張しています.これは絶対デマです.いつでも、変数はvarキーワードを使うことによってしか宣言できません.
次の例を通して具体的な違いを見てみましょう.
例コードを変えましょう.
興味のある友達はオンラインHTML/CSS/JavaScriptコードを使ってツールを実行できます.http://tools.jb51.net/code/HtmlJsRun上記コードの運転効果をテストします.
JavaScriptの関連内容については、当駅のテーマを見ることができます.「javascript対象入門教程」、「JavaScriptエラーとデバッグ技術のまとめ」、「JavaScriptデータ構造とアルゴリズム技術のまとめ」、「JavaScriptアルゴリズムとテクニックのまとめ」及び「JavaScript数学演算の使い方のまとめ」
本論文で述べたように、JavaScriptプログラムの設計に役に立ちます.
突然、2010年の古い文章を見ました.作者は章の形式で
ECMA-262-3
の一部の内容を紹介してくれました.主に文脈、変数の対象、作用領域、thisなどの言語の細部に関連しています.内容は短くて精悍で、文风はまっすぐで、厳格で、読み终わるのは心肠よくて、醍醐味の灌顶の感があって、强烈に推荐します!リンク:ここ
翻訳したいのですが、もう作っている人がいました.ここです.本当に不遇な時に生まれた,何と残念なことか!
メモをして、心を慰めてください.
実行コンテキストExecution Contect
コントローラが
ECMAScript
の実行可能なコードに変換されるたびに、実行可能なコンテキストが作成され、入力されます.短い文章ですが、豊富な内容が含まれています.
js
エンジンeval
コード(それぞれ3つの作用領域に対応)実行コンテキストは論理的にスタックを構成します.スタックの底部は常にグローバルコンテキストであり、スタックの上部は現在/活動の実行コンテキストである.スタックは、ECタイプの変数(various kingds of EC)を押し入れたり、イジェクトしたりしながら修正されます.
例えば、コンテキストスタックの実行をシミュレートするための配列を定義することができる.
ECStack = [
globalContext,
functionContext
]
変数オブジェクトVarable Object変数オブジェクト(VO)は、コンテキストを実行する属性として存在し、下記の内容を保存します.
VO = {
// context data (var, FD, function arguments)
}
変数または関数を宣言すると同時に変数の名前と値を使ってVOに新しい属性を作成しました.たとえば:
var m = 30;
function test(a,b) {
var c = 20
function d() {}
var e = function _e() {};
}
test(10)
「test」関数のコンテキストに入ると、AOは次のようになります.
AO(test) = {
a: 10,
b: undefined,
c: undefined,
d:
e: undefined
};
testが最後まで実行された場合、現在のコンテキストスタックに対応します.
ECStack = [
globalContext: {
VO: {
m: 30,
test:
}
},
test functionContext: {
VO: {
a: 10,
b: undefined,
c: 20,
d: ,
e:
}
}
]
変数について通常、様々な文章やJavaScriptに関する書籍は、「varキーワード(グローバルコンテキストで)を使っても、varキーワードを使わない(どこでも)変数を宣言することができる」と主張しています.これは絶対デマです.いつでも、変数はvarキーワードを使うことによってしか宣言できません.
次の例を通して具体的な違いを見てみましょう.
alert(a); // undefined
alert(b); // "b" is not defined
b = 10;
var a = 20;
すべての根源は依然としてVOとその修正段階(コンテキスト段階に入るとコード段階を実行する)である:
VO = {
a: undefined
};
私たちは、「b」は変数ではないので、この段階では「b」はまったくなく、「b」は実行コード段階だけで出現すると見られています.例コードを変えましょう.
alert(a); // undefined, we know why
b = 10;
alert(b); // 10, created at code execution
var a = 20;
alert(a); // 20, modified at code execution
変数については、もう一つ重要な知識があります.変数には簡単な属性に対して、変数には特性があります.
a = 10;
alert(window.a); // 10
alert(delete a); // true
alert(window.a); // undefined
var b = 20;
alert(window.b); // 20
alert(delete b); // false
alert(window.b); // still 20
2018-8-2-実行コンテキスト、変数オブジェクトを再参照興味のある友達はオンラインHTML/CSS/JavaScriptコードを使ってツールを実行できます.http://tools.jb51.net/code/HtmlJsRun上記コードの運転効果をテストします.
JavaScriptの関連内容については、当駅のテーマを見ることができます.「javascript対象入門教程」、「JavaScriptエラーとデバッグ技術のまとめ」、「JavaScriptデータ構造とアルゴリズム技術のまとめ」、「JavaScriptアルゴリズムとテクニックのまとめ」及び「JavaScript数学演算の使い方のまとめ」
本論文で述べたように、JavaScriptプログラムの設計に役に立ちます.