私はこのコードを持っています
var f = function() {
this.x = 100;
(
function() {
x = 20;
}
)();
};
var a = new f;
console.log(a.x);
なぜ新しい変数 x がグローバル スコープで作成され、出力が 20 ではなく 100 になるのか疑問に思っています。
変数 x = 100;
ネストされた関数は同じ x の値を変更します。経由で x を作成しているようです
this.x = 100
x を関数 f のスコープ外に置きます。その場合、どこで定義されていますか? また、どのようにアクセスできますか?
編集: タイプミスを修正: console.log(x) の代わりに console.log(ax)