Sobes.tech
Junior

V čem spočívá rozdíl mezi různými datovými typy?

sobes.tech AI

Odpověď od AI

V JavaScriptu jsou data rozdělena na primitivní typy a objekty.

Primitivní typy:

  • String: Řetězec znaků. Neměnný.
  • Number: Čísla, včetně celých a s plovoucí desetinnou čárkou, a také Infinity, -Infinity a NaN.
  • Boolean: Logická hodnota (true nebo false).
  • Null: Speciální hodnota představující absenci objektu.
  • Undefined: Hodnota proměnné, které nebylo přiřazeno žádné hodnoty.
  • Symbol: Unikátní a neměnný primitivní typ, používaný jako identifikátory vlastností objektu.
  • BigInt: Celá čísla libovolné délky.

Objekty:

  • Object: Kolekce párů klíč-hodnota. Měnitelné. Příklady: pole, funkce, regulární výrazy, data.

Hlavní rozdíly:

  1. Měnitelnost (Mutability): Primitivní typy jsou neměnné, tj. jejich hodnotu nelze přímo změnit. Při pokusu o změnu se vytvoří nová kopie. Objekty jsou měnitelné, jejich vlastnosti lze přidávat, odstraňovat a měnit.
  2. Předání podle hodnoty/odkazu: Primitivní typy se předávají podle hodnoty (kopíruje se samotná hodnota). Objekty se předávají podle odkazu (kopíruje se odkaz na místo v paměti, kde je objekt uložen).
  3. Porovnání: Primitivní typy se porovnávají podle hodnoty. Objekty se porovnávají podle odkazu (dvě proměnné odkazují na stejný objekt v paměti).
// Příklady
let str1 = "hello";
let str2 = str1; // str2 získá kopii hodnoty str1
str1 = "world"; // Vytvoří se nový řetězec "world" pro str1
console.log(str2); // "hello" - str2 se nezměnil

let obj1 = { name: "Alice" };
let obj2 = obj1; // obj2 získá odkaz na stejný objekt jako obj1
obj1.name = "Bob"; // Změní se vlastnost objektu, na který odkazují obě proměnné
console.log(obj2.name); // "Bob" - obj2 se změnil

let num1 = 10;
let num2 = 10;
console.log(num1 === num2); // true - hodnoty jsou stejné

let objA = { value: 1 };
let objB = { value: 1 };
console.log(objA === objB); // false - porovnávají se odkazy (odkazují na různé objekty, i když mají stejný obsah)

Tabulka rozdílů:

Vlastnost Primitivní typy Objekty
Měnitelnost Neměnné Měnitelné
Předání Podle hodnoty Podle odkazu
Porovnání Podle hodnoty Podle odkazu
Uložení Přímo v proměnné Odkaz na místo v paměti
Datové typy String, Number, Boolean, Null, Undefined, Symbol, BigInt Objekt (včetně polí, funkcí atd.)