4

ローカル変数にグローバルにアクセスしたい(変数の名前空間や場所を変更せずに)。'window。'を使用できると読みましたが、機能していません。

var myNameSpace = {
        window.localVar : 'foo'
    };

alert(window.localVar);  // Not working

JSFiddle

このようなものは機能しますか?

また、グローバル変数のリスクについても読みました。変数の名前が再利用されるリスクがないとほぼ確信している場合、それは安全ですか?

$myTotallyUniqueVarName
4

2 に答える 2

4
var myNameSpace = { };

myNameSpace.localVar = window.localVar = 'foo';

試したように、別のオブジェクトからキーを定義するときに、別のオブジェクトにアクセスすることはできません。ただし、上記のように、同じ値に対して複数の参照/割り当てを作成することはできます。

ただし、この場合、プリミティブ値を割り当てることに注意してください。つまり、独自の値を保持しますwindow.localVarmyNameSpace.localVar変更は反対側には反映されません。

于 2013-02-21T14:31:13.763 に答える
1

グローバル オブジェクトに何らかの形で関連するすべての変数は、グローバルにアクセスできます。ブラウザーでは、window 変数はグローバル オブジェクトを表します。

function a() {
  bvar = 3; // Accessible
  var cvar = 4; // Inaccessible
}

a();

alert(window.bvar === 3); // true
alert(window.cvar === 4); // false, cvar is undefined

// This refers here to the global object
alert(window.bvar === this.bvar); // true
于 2013-02-21T14:38:12.840 に答える