javascriptはコンテキスト、変数オブジェクトのインスタンス分析を実行します。
4570 ワード
本論文の実例は、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
の一部を紹介してくれました。内容は短くて精悍で、文风はまっすぐで、厳格で、読み终わるのは心肠よくて、醍醐味の灌顶の感があって、强烈に推荐します!原文のリンク:ここです
翻訳したいですが、もう作っている人がいます。ここです。本当に不遇な時に生まれた,何と残念なことか!
メモをして、心を慰めてください。
実行コンテキストExecution Contect
コントローラが
ECMAScript
の実行可能なコードに変換されるたびに、実行可能なコンテキストが作成され、入力されます。短い文章ですが、豊富な内容が含まれています。
js
エンジンeval
コード(それぞれ3つの作用領域に対応)実行コンテキストは論理的にスタックを構成します。スタックの底部は常にグローバルコンテキストであり、スタックの上部は現在/活動の実行コンテキストである。スタックは、ECタイプの変数(various kingds of EC)を押し入れたり、イジェクトしたりしながら修正されます。
例えば、コンテキストスタックの実行をシミュレートするための配列を定義することができる。
ECStack = [
globalContext,
<foo> 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: <reference to FunctionDeclaration "d">
e: undefined
};
testが最後まで実行された場合、現在のコンテキストスタックに対応します。
ECStack = [
globalContext: {
VO: {
m: 30,
test:
}
},
test functionContext: {
VO: {
a: 10,
b: undefined,
c: 20,
d: <reference to FunctionDeclaration "d">,
e: <reference to FunctionDeclaration "_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プログラムの設計に役に立ちます。