コンストラクタ a が呼び出されると、「a」の値はグローバル スコープを失うようです。
var a = 6;
function b() {
a = 10;
function a() {}
console.log(a); //10
}
b();
console.log(a); //6
コンストラクタ a が呼び出されると、「a」の値はグローバル スコープを失うようです。
var a = 6;
function b() {
a = 10;
function a() {}
console.log(a); //10
}
b();
console.log(a); //6
変数の巻き上げにより、順序は次のように解釈されます。@ShadowCreeper が正しく指摘しているように、実際には関数 b 内にfunction a(){}
ローカル変数を作成していることに注意してください。これは以下に示すように巻き上げられます。a
var a;
var b;
a = 6;
b = function() {
var a;
a = function(){};
a = 10;
console.log(a); //10
}
b();
console.log(a); //6
ローカル変数 ( 関数 ) を作成してから、そのローカル変数の値 ( )a
を に置き換えているためです。function
10
このようなことを回避する 1 つの方法は、すべてのローカル変数と関数の前に "_" (アンダースコア) を付けることです。