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ésNaNértékeket. - Boolean: Logikai érték (
truevagyfalse). - 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:
- 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.
- É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).
- Ö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.) |