JavaScript Primitive vs. Reference data types

JavaScript Primitive vs. Reference data types

Xodiyev Lutfulloxon
Javascript primitive vs reference data types

Birinchi navbata data type nima ekanligi haqida gapirib qisqacha tushuntirib o'tamiz. Data type bu xotiradan ma'lum bir joy egallaydigan o'zgaruvchi. Javascriptda 2 turdagi data typelar mavjud. 1. Primitive data types 2. Reference data types.

Javascriptda 6 ta Primitive data type mavjud. 1. undefined 2. null 3. number 4. string 5.boolean 6. symbol. Reference data type larga Object kiradi ya'ni (Function, Array, Object)

O'zgaruvchiga qiymat tayinlaganingizda, JavaScript o'zi bu qiymat primitive type yoki reference ekanligini aniqlaydi.

Birinchi navbatda Primitive data typelar haqida gaplashamiz.

Primitive data typelarning xotirada egallaydigan joyi aniq bo'ladi.

Biz Primitive datalarda o'zgaruvchinining qaysi turga tegishli ekanligini typeof operatori yordamida aniqlaymiz.

Code
Code

Primitive datalardan nusxa olish

Primitive datalarni boshqa o'zgaruvchiga saqlaganingizda ushbu o'zgaruvchiga xotiradan alohida boshqa joy ajratiladi.

let a=10 Xotiradan 10 uchun alohida joy ajratiladi


Xotiradan a o'zgaruvchi uchun joy ajratildi

let b=a

Xotiradan b uchun ham alohida joy ajratiladi

Shundan so'ng biz b=20 deb yangi qiymat tayinlaymiz va natijani console oynaga chiqarsak

a va b o'zgaruvchining xotiradan egallab turgan o'rni

Ya'ni biz b o'zgaruvchini qiymatini o'zgartirganimiz bilan u a o'zgaruvchiga ta'sir qilmaydi. Nima uchun degan ushbu ikki o'zgaruvchini xotirada alohida egallab turgan joyi bor deb tushunishimiz mumkin.

Reference data type

Ushbu data typelarga Function, Array va Object lar kiradi.

Reference data typelar Dinamik hisoblanib xotiradan qancha joy egallashini oldindan aytib bo'lmaydi.

Reference data typelarning qaysi reference value ga tegishli ekanligini instancof operatori yordamida aniqlaymiz.

Code
Code
Code
Code

Demak object bilan array typeof object natijani qaytarar ekan. Funksiya esa Function

Reference datalardan nusxa olish

Code

Agar biz newPerson obekti age kluchiga boshqa qiymat berib masalan newPerson.age=25 deb consolega person qiymatini chiqarsak

Code

Ko'rishingiz mumkin newPerson obektining age kluchini qiymatini o'zgartirganimiz person obektining age kluchini qiymatiga ham ta'sir qilganini.

Demak bundan xulosa qilishimiz mumkin Reference data typeda nechta o'zgaruvchi ochib undan copy qilsak ham u xotiraning bitta joyiga murojaat qilishini ko'rishimiz mumkin. Undan nusxa olingan yangi o'zgaruvchilarni klyuchlariga o'zgartirish kiritsak hammasiga ta'sir qilishini ko'rishimiz mumkin.

Code

Yuqorida obektdan nusxa olib uning ichidagi birorta klyuchini o'zgartirganimizda u boshqalariga ham ta'sir qilganini ko'rib chiqdik. Agar siz obektdan nusxa olib uning klyuchini o'zgartirganingizda boshqalariga ta'sir qilishini xohlamasangiz spread operatori yordamida obektdan haqiqiy clone olishni ko'ramiz va uni xohlagancha o'zgartirishingiz mumkin. (Eslatma obketdan spread operatori yordamida haqiqiy clone olganimizda xotiradan boshqa alohida joy egallaydi)

Code

Ko'rib turganingizdek spread operator yordamida clone olganimizda NewPerson obekti klyuchlarini o'zgartirsak ham u person obektiga ta'sir ko'rsatmaganini.

Primitive va Reference data typelarning yana bir asosiy farqi shundaki, primitive data type o'zida faqatgina bitta o'zgaruvchi saqlay oladi. Masalan let str="Hello" yoki let number=5 Reference data typelarda esa o'ziga bir qancha o'zgaruvchilarni saqlashi mumkin va shunga qo'shimcha qilib o'zgaruvchilarning ichidagi element typelari ham har xil bo'lishi mumkin let arr=[12,21,34,26,null,undefined, 'hello'] bu yerda 12=> typeof number, undefined=> typeof undefined, 'hello' typeof string yoki

let person={ name:"Lutfullaxon", surname:"Xodiyev", age:22}

Demak xulosa qilib aytishimiz mumkin.

Primitiva Data Types

  1. Xotiradan alohida joy egallaydi
  2. O'zida faqat bitta o'zgaruvchi saqlay oladi
  3. Immutable yani o'zgarmas=>Yuqorida ko'rganimizdek nusxasini olganimzda boshqasiga boshqalariga ta'sirini ko'rsatmaydi (let a=10 let b=a b=30 qiymatini bersak a ning qiymati 10 bo'lib qolaveradi 30 ga teng bo'lib qolmaydi )

Reference Data Types

  1. Hamma nusxalari xotiraning bitta ko'rsatkichiga murojjat etadi.
  2. O'zida bir qancha o'zgaruvchilarni saqlay oladi.
  3. Mutable ya'ni o'zgaruvchan (dinamik) xotiradan oldindan qancha joy egallashini aytib bo'lmaydi. yuqorida ko'rganimizdek obektdan nusxa olib nusxasini birorta klyuchini qiymatini o'zgartirganimizda boshqalariga ham o'z ta'sirini o'tkazishini


Siz azizlarga maqolamiz manzur bo'ldi deb o'ylayman. Bizni kuzatishda davom eting

Telegram tarmog'idagi kanalimiz https://t.me/JsTutorial



















Report Page