3

このスコープの仕組みがわかりません。でのみ変更される場合eg.i、の値はどのように変更されますか?firstsecond

var obj = {

    first: function() {

        var eg = {i: 0}; // eg equals 0 here

        obj.second(eg);
        obj.second(eg);

        console.log(eg.i); // 2
    },

    second: function(eg) {

        ++eg.i;
    }
};

eg.i最初の関数でもどのように変更されますか?

4

3 に答える 3

4

オブジェクトが JS の関数に渡される場合、それらは値ではなく参照として渡されます: http://snook.ca/archives/javascript/javascript_pass

于 2013-06-02T20:10:50.233 に答える
3

egにパラメーターとして渡していますsecond。名前を変更した場合は、次のように簡単に確認できます。

second: function(x) {
    ++x.i;
}

2 番目の関数で変更するため、最初の関数で変更されます。

于 2013-06-02T20:10:07.433 に答える