Sobes.tech
Junior

Mi a különbség a különböző adattípusok között?

sobes.tech MI

Válasz az MI-től

A JavaScript-ben az adatok primitív típusokra és objektumokra oszlanak.

Primitív típusok:

  • String: Karakterlánc. Változatlan.
  • Number: Számok, beleértve egész és lebegőpontos számokat, valamint az Infinity, -Infinity és NaN értékeket.
  • Boolean: Logikai érték (true vagy false).
  • Null: Különleges érték, amely az objektum hiányát jelzi.
  • Undefined: Egy változó értéke, amelyhez nincs hozzárendelve érték.
  • Symbol: Egyedi és változatlan primitív típus, amely az objektum tulajdonságainak azonosítására szolgál.
  • BigInt: Bármilyen hosszú egész számok.

Objektumok:

  • Object: Kulcs-érték párok gyűjteménye. Módosítható. Példák: tömbök, függvények, reguláris kifejezések, dátumok.

Fő különbségek:

  1. Változtathatóság (Mutability): A primitív típusok változatlanok, azaz értéküket nem lehet közvetlenül módosítani. A módosítási kísérlet új másolatot hoz létre. Az objektumok módosíthatók, tulajdonságaikat hozzá lehet adni, törölni és módosítani.
  2. Érték / hivatkozás szerinti átadás: A primitív típusok érték szerint kerülnek átadásra (a saját értéküket másolják). Az objektumok hivatkozás szerint (a memóriahelyre mutató hivatkozás másolódik).
  3. Összehasonlítás: A primitív típusokat érték szerint hasonlítjuk össze. Az objektumokat hivatkozás szerint (két változó ugyanarra az objektumra mutat).
// Példák
let str1 = "hello";
let str2 = str1; // str2 a str1 értékének másolatát kapja
str1 = "world"; // Új "world" sztring jön létre a str1 számára
console.log(str2); // "hello" - a str2 nem változott

let obj1 = { name: "Alice" };
let obj2 = obj1; // obj2 ugyanarra az objektumra mutat
obj1.name = "Bob"; // Az objektum tulajdonsága módosul
console.log(obj2.name); // "Bob" - az obj2 is változott

let num1 = 10;
let num2 = 10;
console.log(num1 === num2); // true - az értékeket hasonlítjuk össze

let objA = { value: 1 };
let objB = { value: 1 };
console.log(objA === objB); // false - a hivatkozásokat hasonlítjuk össze (különböző objektumok, még ha ugyanazt is tartalmazzák)

Különbségek táblázata:

Jellemző Primitív típusok Objektumok
Változtathatóság Változatlanok Változtathatók
Átadás Érték szerint Hivatkozás szerint
Összehasonlítás Érték szerint Hivatkozás szerint
Tárolás Közvetlenül a változóban Hivatkozás a memória helyére
Adattípusok String, Number, Boolean, Null, Undefined, Symbol, BigInt Objektum (beleértve tömböket, függvényeket stb.)