基本的な例:Javascriptの割り当て操作は、参照をコピーすることですか?
var b = 10;
var c = b;
b++;
console.log(b,c);
>> 11 10
c
はb
のコピーのように見えます。
しかし、別の場合:
var x = {};
var y = x;
x.abc = 10;
console.log(x.abc, y.abc);
>> 10 10
なぜx
のy
コピーではなく、それに同じインスタンスにx
ポイントを指す参照がありますか?
は別のインスタンスを作成していると推測しています。したがって、b
は新しいインスタンスを指しますが、c
は古いインスタンスを指しています。 u++
は、新しいインスタンスを作成した場合は...しかし、その後、匿名関数の内部u
はいけない、古いu
に
var u = 10;
setTimeout(function() {
console.log(u);
}, 10000)
u++;
>> 11
指している必要がありますか?
あなたの最後の文章 –
@Quentin:オリジナルの "オブジェクト"は、js実装(ES3/5)によって作成された 'アクティベーションオブジェクト'または 'レキシカル環境'内のどこかに存在するだけなので、実際にはEに触れることはありませんCMAscript自体。 – jAndy
"どちらも同じ不変の値への参照です。"それは観測された出力 "11 10"と矛盾していませんか?出力は、それらが異なる値への参照であることを示唆します。 – Neptilo