Junior
Kuo skiriasi skirtingų duomenų tipai?
sobes.tech AI
Atsakymas iš AI
JavaScript duomenys skirstomi į pagrindinius tipus ir objektus.
Pagrindiniai tipai:
- String: Simbolių seka. Nekeičiama.
- Number: Skaičiai, įskaitant sveikus ir su kintamuoju tašku, taip pat
Infinity,-InfinityirNaN. - Boolean: Loginė reikšmė (
truearbafalse). - Null: Speciali reikšmė, žyminti objekto nebuvimą.
- Undefined: Kintamojo reikšmė, kuriai nėra priskirta reikšmė.
- Symbol: Unikalus ir nekeičiama pagrindinė rūšis, naudojama objekto savybių identifikatoriams.
- BigInt: Neriboto ilgio sveikieji skaičiai.
Objektai:
- Object: Raktų-reikšmių porų kolekcija. Keičiamas. Pavyzdžiai: masyvai, funkcijos, reguliarios išraiškos, datos.
Pagrindiniai skirtumai:
- Keičiamumas (Mutability): Pagrindiniai tipai yra nekintami, t. y. jų reikšmės tiesiogiai keisti negalima. Bandymo keisti metu kuriama nauja kopija. Objektai yra keičiamieji, jų savybės gali būti pridedamos, šalinamos ir keičiamas.
- Perdavimas pagal reikšmę/nuorodą: Pagrindiniai tipai perduodami pagal reikšmę (kopijuojama pati reikšmė). Objektai perduodami pagal nuorodą (kopijuojama nuoroda į atminties vietą, kur saugomas objektas).
- Lyginimas: Pagrindiniai tipai lyginami pagal reikšmę. Objektai lyginami pagal nuorodą (dvi kintamosios nurodo į tą patį objektą atmintyje).
// Pavyzdžiai
let str1 = "hello";
let str2 = str1; // str2 gauna str1 reikšmės kopiją
str1 = "world"; // Sukuriamas naujas eilutė "world" skirta str1
console.log(str2); // "hello" - str2 nepasikeitė
let obj1 = { name: "Alice" };
let obj2 = obj1; // obj2 gauna nuorodą į tą patį objektą kaip ir obj1
obj1.name = "Bob"; // Keičiasi objekto savybė, į kurią nurodo abi kintamosios
console.log(obj2.name); // "Bob" - obj2 pasikeitė
let num1 = 10;
let num2 = 10;
console.log(num1 === num2); // true - reikšmės yra vienodos
let objA = { value: 1 };
let objB = { value: 1 };
console.log(objA === objB); // false - nuorodos lyginamos (nurodo į skirtingus objektus, nors turinys yra vienodas)
Skirtumų lentelė:
| Savybė | Pagrindiniai tipai | Objektai |
|---|---|---|
| Keičiamumas | Nekeičiami | Keičiamieji |
| Perdavimas | Pagal reikšmę | Pagal nuorodą |
| Lyginimas | Pagal reikšmę | Pagal nuorodą |
| Saugojimas | Tiesiog kintamajame | Nuoroda į atminties vietą |
| Duomenų tipai | String, Number, Boolean, Null, Undefined, Symbol, BigInt | Objektai (įskaitant masyvus, funkcijas ir kt.) |