Jadi saya bermain-main beberapa hari yang lalu hanya untuk melihat dengan tepat bagaimana tugas massal bekerja di JavaScript.
Pertama saya mencoba contoh ini di konsol:
a = b = {};
a.foo = 'bar';
console.log(b.foo);
Hasilnya adalah "bar" yang ditampilkan dalam sebuah peringatan. Itu cukup adil, adan bsebenarnya hanyalah alias untuk objek yang sama. Lalu saya berpikir, bagaimana saya bisa membuat contoh ini lebih sederhana.
a = b = 'foo';
a = 'bar';
console.log(b);
Itu kurang lebih sama, bukan? Nah kali ini, hasilnya footidak barseperti yang saya harapkan dari perilaku contoh pertama.
Mengapa ini terjadi?
NB Contoh ini bisa lebih disederhanakan lagi dengan kode berikut:
a = {};
b = a;
a.foo = 'bar';
console.log(b.foo);
a = 'foo';
b = a;
a = 'bar';
console.log(b);
(Saya menduga bahwa JavaScript memperlakukan primitif seperti string dan integer secara berbeda dengan hash. Hash mengembalikan penunjuk sementara primitif "inti" mengembalikan salinan dirinya sendiri)