3

誰かが次のコードで私を説明できます.o = {}を実行すると、オブジェクトがリセットされないのはなぜですか?

var funky = function (o) {
    o.z = null;
    o.a = "aaa";        
    o = {};
};

var x = { z: "zzz"};
funky(x);

console.log(x);
4

2 に答える 2

7

JavaScript は参照渡しではないためです。参照を値で渡します。

違いは微妙ですが、重要です。その要点は、オブジェクト変数の値はオブジェクトではないということです。オブジェクトへの参照です。変数を渡すと、その参照のコピーが渡されます。これを使用すると、オブジェクトのコンテンツを事実上自由に変更できますが、呼び出し元が見ることができる方法で、オブジェクトを完全に別のオブジェクトに置き換えることはできません。

于 2013-03-14T15:07:33.193 に答える