Sobes.tech
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, -Infinity ir NaN.
  • Boolean: Loginė reikšmė (true arba false).
  • 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:

  1. 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.
  2. 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).
  3. 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.)