Value orqali o'tish va mos yozuvlar orqali o'tishning farqi nimada?

Javascript funktsiyalarida biz satr yoki raqam kabi ibtidoiy tipdagi o'zgaruvchiga o'tayotganimizda, qiymat qiymati bo'yicha o'tkaziladi. Buning ma'nosi shundan iboratki, funktsiya vaqtida o'zgaruvchiga qilingan har qanday o'zgarishlar funktsiyadan tashqari sodir bo'ladigan narsalardan mutlaqo ajralib chiqadi.

Masalan, var a kabi ibtidoiy qiymat 0x001 manzil manziliga ega

Agar b = a qilishimiz kerak bo'lsa (yoki hatto b funksiyaga b)

b yangi manzil tayinlanadi (u boshlang'ich qiymatning nusxasi)

b manzilning joylashuvi 0x002 bo'lishi kerak. Ushbu yondashuv qiymatning o'tishi misolidir.

Bu qiymat orqali o'tishning namunasidir, chunki impost bu shunchaki iste'dod o'zgaruvchisining nusxasi, ammo boshqa xotira maydoni mavjud va o'rgatish uchun kiritilgan har qanday o'zgarishlar iste'dodning o'zgarishiga ta'sir qilmaydi.

Malumot nima orqali o'tadi?

Agar o'zgaruvchi ob'ektga qo'yilgan bo'lsa, biz hali ham xotira maydoniga ega bo'lamiz, lekin b a ga o'rnatilgan bo'lsa, yangi o'zgaruvchiga b, yangi xotira joyini olish o'rniga, yangi nusxa olinmasa, yangi nomlar bir xil xotiraga ishora qiladi. bo'sh joy va bir xil manzil.

Bu juda boshqacha harakat qiladigan ma'lumotlarga o'tish deb ataladi.

Yuqoridagi misol mos yozuvlar orqali o'tadi.

mutate => biror narsani o'zgartirish uchun.

var d va var c bir xil xotira maydoniga ega va bundan tashqari c ga kiritilgan har qanday o'zgarishlar ham d ga o'zgartirilishi mumkin. Javascript-dagi barcha ob'ektlar mos yozuvlar orqali o'tkaziladi.

Agar biror narsa o'zgarmas bo'lsa, demak uni o'zgartirib bo'lmaydi.

Ob'ektlar, shuningdek, funktsiyalardagi parametrlar kabi, mos yozuvlar orqali ham uzatiladi.

Yuqorida ko'rib turganingizdek, Javascript-dagi ob'ektlar biron bir funktsiyaga topshirilgan bo'lsa ham, ular hali ham mos yozuvlar orqali o'tadi va ob'ektga kiritilgan o'zgarishlar funktsiyalarga o'tishda ibtidoiy turlarga qilingan o'zgarishlardan farqli o'laroq saqlanib qoladi.

Keyinchalik, men foydalanuvchilarga mos yozuvlar orqali o'tmasdan ob'ektning nusxasini yaratishga imkon beradigan tarqalish operatorlari tushunchasini tanishtirmoqchiman.

Yuqorida ko'rib turganingizdek, tarqalish operatori yordamida biz test massivining barcha elementlarini baholay oldik va uni boshqaTest qatoriga o'rnatdik va biz boshqa bir testga element qo'sha olamiz va bu asl sinov qatoriga ta'sir qilmaydi.

Javascript-dagi ob'ekti orqali iteratsiya qilishning boshqa usullari mavjud, ular ob'ektning nusxasini olish uchun elementlarni ushlab olishadi.

Yuqorida ko'rib turganingizdek, xarita hisoblagich shunchaki foydalanuvchi tomonidan o'zgartirilgan tarzda o'zgartirilgan boshqa massiv nusxasini qaytaradi, bu holda foydalanuvchi uni biron bir tarzda o'zgartira olmaydi va yangi qatorni qaytaradi. Yangi ob'ektga kiritilgan har qanday o'zgarishlar asl ob'ektga ta'sir qilmaydi.

Ko'rinib turibdiki, filtr usulini iteratsiya qilish, foydalanuvchi asl ob'ekti o'zgartirmaydigan ob'ekt nusxasini baholashni xohlaganida ham ishlashi mumkin.

Umid qilamanki, sizga ushbu dars yoqdi.