October 21

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:

1.Primitive

2.Non-primitiv(Reference)


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,nullorqali 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

  1. const big = Bigint() kalit sozi orqali
  2. const big = ordinary number + n // 111n

BigInt ga faqat BigInt qo’shiladi oddiy number typedagi malumotni qo'shib bo'lmaydi.Shu paytgacha faqat leetcode da masala yechish uchun ishlatdim


Reference(Object)

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.