5

コンストラクタ a が呼び出されると、「a」の値はグローバル スコープを失うようです。

var a = 6;

function b() {
    a = 10;

    function a() {}
    console.log(a); //10
}
b();
console.log(a); //6
4

3 に答える 3

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
于 2013-05-28T23:52:48.163 に答える
2

ローカル変数 ( 関数 ) を作成してから、そのローカル変数の値 ( )aを に置き換えているためです。function10

このようなことを回避する 1 つの方法は、すべてのローカル変数と関数の前に "_" (アンダースコア) を付けることです。

于 2013-05-28T23:47:57.997 に答える