JavaScriptで私に見せた複雑さを理解しようとしています。次の簡単な関数を考えてみましょう:JS関数への参照渡しとプロパティのオーバーライドはできますが、オブジェクト全体を上書きすることはできませんか?
function myFunction(p) {
p.property = 1;
}
var obj = {property: 0};
console.log(obj); // {property: 0}
myFuncton(obj);
console.log(obj); // {property: 1}
のは、これを繰り返してみましょうが、その代わりに、オブジェクトの一部を上書きする、のは、オブジェクト全体を上書きしてみましょう:予想通り
function myFunction(p) {
p = {property: 1};
}
var obj = {property: 0};
console.log(obj); // {property: 0}
myFuncton(obj);
console.log(obj); // {property: 0}
はなぜOBJは、ここでは置き換えられませんか?
JavaScriptは参照渡しを使用していません。 Javaの人たちは、それが価値あるものだとは言いますが、それは本当に参考になります。あまり面倒ではないものがあることを望みます。 "値渡し"は間違った印象を与え、 "オブジェクトによる呼び出し"や "共有による呼び出し"もあいまいです。 – user2357112