Hasil yang diharapkan sangat berbeda dari hasil aktual ketika saya secara tidak sengaja menemukan masalah ini di internet.
var a = {n: 1} var b = a; ax = a = {n: 2} console.log (ax); console.log (bx); tidak terdefinedObject {n: 2}Jika saya memisahkan, hasilnya adalah apa yang saya pikirkan
var a = {n: 1} var b = a; a = {n: 2}; ax = {n: 2} console.log (ax); // objek {n: 2} konsol.log (bx); // tidak terdefinisimenganalisa:
ax = a = {n: 2}
Operasi penugasan JS dikombinasikan dengan hak, yang setara dengan ax = (a = {n: 2})
Operasi evaluasi JS berasal dari kiri ke kanan (PS: dibahas dengan seorang kolega, dia mengatakan itu dari kiri ke kanan, dan saya pikir itu dari kanan ke kiri, tetapi pada akhirnya saya menemukan bahwa saya salah)
1) AX = (hasil akhir dalam tanda kurung)
Setelah menemukan bahwa atribut X dari A tidak ada, tambahkan atribut x ke objek yang ditunjukkan oleh a. Atribut X ini perlu menetapkan hasil untuk itu. Oke, saya akan menunggu hasilnya.
2) Karena Anda ingin mendapatkan hasil dalam tanda kurung, AX terus menunggu hasil dalam kurung untuk mengembalikannya, jadi Anda mulai mengevaluasi a = {n: 2} dan kemudian mengembalikannya ke atribut baru ini x
3) Kembali ke a = {n: 2} dalam tanda kurung, perubahan menunjuk terjadi
Implementasi sederhana dari penugasan JS berkelanjutan di atas adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.