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,-InfinityaNaN. - Boolean: Logická hodnota (
truealebofalse). - 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:
- 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ť.
- 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ý).
- 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.) |