「3.10.2 プロパティとしての変数」

Variables As Properties

var truevar = 1;      // A properly declared global variable, nondeletable.
fakevar = 2;          // Creates a deletable property of the global object.
this.fakevar2 = 3;    // This does the same thing.
delete truevar        // => false: variable not deleted
delete fakevar        // => true: variable deleted
delete this.fakevar2  // => true: variable deleted

JavaScript のグローバル変数は、グローバルオブジェクトのプロパティになります。このことは、ECMAScript 仕様で標準化されています。ローカル変数の場合には、このような用件はありません。しかし、ローカル変数についても、関数呼び出しに関連付けられたオブジェクトのプロパティとして扱うこともできます。ECMAScript 3 仕様では、このオブジェクトのことを「Call オブジェクト」と呼んでいます。また、ECMAScript 5 仕様では「Declarative Environment Record」と呼んでいます。

JavaScript global variables are properties of the global object, and this is mandated by the ECMAScript specification. There is no such requirement for local variables, but you can imagine local variables as the properties of an object associated with each function invocation. The ECMAScript 3 specification referred to this object as the "call object", and the ECMAScript 5 specification calls it a "declarative environment record".

  • requirement

JavaScript では、this キーワードを使ってグローバルオブジェクトを参照できます。しかし、ローカル変数が保存されているオブジェクトを参照する方法はありません。

The precise nature of these objects that hold variables is an implementation detail that need not concern us. The notion that these local variable objects exist, is however, is an important one, and it is developed further in the next section.

トラックバック - http://mnemonic.g.hatena.ne.jp/paragramma/20130314