Sobes.tech
Junior

V čom spočíva rozdiel medzi rôznymi typmi údajov?

sobes.tech AI

Odpoveď od AI

V JavaScripte sú dáta rozdelené na primitívne typy a objekty.

Primitívne typy:

  • String: Reťazec znakov. Nemenný.
  • Number: Čísla, vrátane celých a s plávajúcou čiarkou, ako aj Infinity, -Infinity a NaN.
  • Boolean: Logická hodnota (true alebo false).
  • Null: Špeciálna hodnota predstavujúca absenciu objektu.
  • Undefined: Hodnota premennej, ktorej nebola priradená žiadna hodnota.
  • Symbol: Unikátny a nemenný primitívny typ, používaný ako identifikátory vlastností objektu.
  • BigInt: Celé čísla ľubovoľnej dĺžky.

Objekty:

  • Object: Kolekcia párov kľúč-hodnota. Meniteľný. Príklady: pole, funkcie, regulárne výrazy, dátumy.

Hlavné rozdiely:

  1. Meniteľnosť (Mutability): Primitívne typy sú nemenné, t.j. ich hodnota sa nedá priamo zmeniť. Pri pokuse o zmenu sa vytvorí nová kópia. Objekty sú meniace sa, ich vlastnosti je možné pridávať, odstraňovať a meniť.
  2. Prenos podľa hodnoty/vzťahu: Primitívne typy sa prenášajú podľa hodnoty (kopíruje sa samotná hodnota). Objekty sa prenášajú podľa vzťahu (kopíruje sa odkaz na miesto v pamäti, kde je objekt uložený).
  3. Porovnanie: Primitívne typy sa porovnávajú podľa hodnoty. Objekty sa porovnávajú podľa odkazu (dve premenné odkazujú na ten istý objekt v pamäti).
// Príklady
let str1 = "hello";
let str2 = str1; // str2 získa kópiu hodnoty str1
str1 = "world"; // Vytvorí sa nový reťazec "world" pre str1
console.log(str2); // "hello" - str2 sa nezmenil

let obj1 = { name: "Alice" };
let obj2 = obj1; // obj2 získa odkaz na ten istý objekt ako obj1
obj1.name = "Bob"; // Zmení sa vlastnosť objektu, na ktorý odkazujú obe premenné
console.log(obj2.name); // "Bob" - obj2 sa zmenil

let num1 = 10;
let num2 = 10;
console.log(num1 === num2); // true - hodnoty sú rovnaké

let objA = { value: 1 };
let objB = { value: 1 };
console.log(objA === objB); // false - porovnávajú sa odkazy (odkazujú na rôzne objekty, aj keď majú rovnaký obsah)

Tabuľka rozdielov:

Vlastnosť Primitívne typy Objekty
Meniteľnosť Nepremeniteľné Meniace sa
Prenos Podľa hodnoty Podľa odkazu
Poredenie Podľa hodnoty Podľa odkazu
Uloženie Priamo v premennej Odkaz na miesto v pamäti
Typy dát String, Number, Boolean, Null, Undefined, Symbol, BigInt Objekt (vrátane polí, funkcií a pod.)