JavaScriptdagi data-type lar
Data typelar nima va nima uchun kerak deydigan bo'lsak.Data type (ma'lumot turi) dasturlashda saqlamoqchi bo'lgan qiymatlarning turini belgilash uchun kerak bo'ladi.Malumot agar raqamlarga oid bo'lsa number
,agar qandaydir so'zni ifodalasa string
data type ga oid hisoblanadi.Biror bir o'zgaruvchiga malumot biriktirganimizda biriktirilgan malumotning data typega tegishli prototype shakillanadi va uning ichida shu type da ishlatilishi mumkin bo'lgan funksiyalar(method) mavjud. Bu haqida prototype
mavzusida to'liqroq to'xtalamiz.Misol uchun:
JavaScriptda data typelar 8 ta turga bo'linadi.Shu bilan birga bu 8 ta tur 2 ta guruhga bo'linadi.Bular:
Boshlangich malumotlar beriladi to'liq malumot har bir type bo'yicha alohida yoziladi.
1.Primitive
1.1 String -> bu so'z bilan ifodalangan malumotlar yani “ text ” , ‘ text ‘ , `text`
kabilarning barchasi string
malumot hisoblanadi.Boshqa type dagi malumotlarni string
ga o'tkazish uchun toString
ishlatiladi faqat null
va undefined
dan tashqari shu bilan birga object
ni string ga conversion qilish uchun JSON.stringify
ishlatiladi.string yaratish uchun "",'',`` yoki new String() constructoridan foydalaniladi constructor orqali yaratilganda uning qiymadi valueOf()
orqali olinadi. Stringlar bir biri bilan taqqoslanganda ASCII table dagi qiymati bo'yicha taqqoslanadi.Misol; a(97) > B(66) natija: true
aniqlash: 'a'.charCodeAt() > 'B'.charCodeAt()
1.2 Number -> bu JavaScriptdagi barcha sonlar hisoblanadi boshqa tillarda number bir nechta turlarga bo'linib ketgan.JS dagi eng katta number
ni korish uchun
Number.MAX_SAFE_INTEGER orqali aniqlanadi // 9007199254740991
ishlatiladi.Bunday keyin hatolikllar paydo boladi.
9007199254740991 + 1 //9007199254740992 9007199254740991 + 2 //9007199254740992
Number ham oddiy raqam kiritish yoki new Number constructori orqali yaratilishi mumkin constructor orqali yaratilganda uning qiymadi valueOf()
orqali olinadi
1.3 Boolean -> bu true
va false
qiymatlar.Bular asosan biror narsani tekshirish,shart berish uchun ishlatiladi.Masalan stringdagi .includes() metodi boolean javob qaytaradi.
falsy qiymatlar: null, undifined, false, NaN, 0, -0, 0n, “ ”,
truty qiymatlar: falsy bolmagan qiymatlarni bari truty qiymat.
1.4 Symbol -> bu takronlanmas hisoblanadi yani biri ikkinchisiga hech qachon teng emas.Syboldan biror obyektga kirish uchun faqat bitta yo’l qilish uchun foydalaniladi yoki takrorlanmas nom kerak bolganda ishlatiladi.Masalan user malumotlari saqlanadigan obyektda userning maxfiy malumotlarini saqlash uchun ishlatiladi va Symbol orqali yaratilgan malumotlar for..in,Object,keys shu kabi iteratorlada ko'rinmaydi
const user = { name: 'azz', pass: Symbol('password') }; console.log(Object.keys(user)); // ['name'] (pass ko'rinmaydi)
1.5 Undefined -> o'zi nomidan aniqki aniqlanmmagan
malumot degan manoni anglatadi.O'zgaruvchi elon qilib unga qiymat bermay qoldirilsa JS tomonidan default tarzda u undifined qiymat oladi.Shuning uchun
let x; // bu yerda default undefined ga teng bo'ldi.
x = 12 qilsa qayta reassigment bo'ladi.
1.6 Null -> alohida datatype bolsa ham JavaScript dagi hatolik tufayli typeof orqali ko'rilganda object
deb ketilgan.Null ko'pincha boshlang'ich qiymat yo'qligida va keyinchalik o'zgarishi mumkun bo'lgan o'zgaruvchilarga biriktiriladi,null
orqali prototype siz object yaratsa ham bo'ladi Object.create(null)
(intervyuda so'ralgan).prototype chain ham oxiri borib null bo'ladi.Balki shunday bog'liqliklari borligi uchun datatype ni object
deb ketilgandir siz nima deb o'ylaysiz kommentda kutaman.
1.7 BigInt -> Number.MAX_SAFE_INTERGER dan katta raqamlar bilan hisob kitoblarni olib borish uchun ishlatiladi. BigInt ni yaratish uchun
BigInt ga faqat BigInt qo’shiladi oddiy number typedagi malumotni qo'shib bo'lmaydi.Shu paytgacha faqat leetcode da masala yechish uchun ishlatdim
Object (To'liq qilib alohida yozaman chunki juda ma'lumot ko'p)
Object {…} yoki let name = new Object contructor orqali yaratilishi mumkin.
object key lari string yoki symbol bolishi mumkin
let obj = { 0: "test" // same as "0": "test" bu holatda stringga convertatsiya qivoradi }; // both alerts access the same property (the number 0 is converted to string "0") alert( obj["0"] ); // test alert( obj[0] ); // test (same property)
objectga “ . (dot notation ) yoki [ ] orqali kirish mumkin [ ] ko’proq imkonyatlarga ega yani dynamik key lar berib uning value sini olishimiz mumkin yoki ko’p so’zli keylarga kirishda ham [ ] ishlatamiz.