-1
(function() {

    var sample = "sample1";

    (function() {

        // set sample variable 
        sample = "sample2";

        (function() {

            // set sample variable
            sample = "sample3";
        }());
    }());



    console.log(sample); // "sample3"
}());

それで; サンプル名 @変数 console.log 結果 "sample3"; 最初の変数を取得するにはどうすればよいですか? 「サンプル1」??

console.log(sample); // --> "sample1" ?? 

ありがとうございました。

4

3 に答える 3

2

外側の変数に代入する代わりに、変数を宣言しますか?

var sample = "sample2";

また、なぜですか?

于 2012-09-29T15:16:30.300 に答える
2

代入は、変数に格納した値を変更します。古い値を戻すことはできません。

変数の参照

変数を参照するとき、つまり読み書きするときはいつでも、JavaScript はその名前の変数が見つかるまでスコープ チェーンwindowをたどります。

変数の宣言

var現在のスコープで新しい変数を宣言します。各割り当ての前に を付けるsamplevar、変数は外側の変数を覆い隠しますなんで?変数を参照するとき、JavaScript はスコープ チェーンを上に移動することを思い出してください。明らかに、ネストされたスコープ内のものを最初に見つけて、親スコープをさらに検索するのを止めます。

コードが本質的に行うこと

変数を参照すると何が起こるかを念頭に置いて、コードをこれに変換できます。これは意味的に同等です (つまり、コードが行うこととまったく同じです)。

var sample = "sample1";
sample = "sample2";
sample = "sample3";
console.log(sample);

明らかに、それは印刷されsample3、魔法のように古い値を再現することはできません。

于 2012-09-29T15:27:45.220 に答える
1

sample各スコープで独立変数を宣言できます。

(function() {

    var sample = "sample1";

    (function() {

        // set sample variable 
        var sample = "sample2";

        (function() {

            // set sample variable
           var sample = "sample3";
        }());
    }());

console.log(sample); // "sample1"
}());

ここで試してみてください。

于 2012-09-29T15:50:35.393 に答える