Junior
У чему се састоји разлика између различитих типова података?
sobes.tech АИ
Одговор од АИ
U JavaScript-u, podaci su podeljeni na primitivne tipove i objekte.
Primitivni tipovi:
- String: Niz znakova. Nepromenljiv.
- Number: Brojevi, uključujući cele i sa pokretnom tačkom, kao i
Infinity,-InfinityiNaN. - Boolean: Logička vrednost (
trueilifalse). - Null: Specijalna vrednost koja predstavlja odsustvo objekta.
- Undefined: Vrednost promenljive kojoj nije dodeljena vrednost.
- Symbol: Jedinstveni i nepromenljiv primitivni tip, korišćen za identifikatore svojstava objekta.
- BigInt: Celi brojevi proizvoljne dužine.
Objekti:
- Object: Kolekcija parova ključ-vrednost. Menjiv. Primeri: nizovi, funkcije, regularni izrazi, datumi.
Glavne razlike:
- Menjivost (Mutability): Primitivni tipovi su nemenjivi, tj. njihova vrednost ne može biti direktno promenjena. Pokušajem promene se kreira nova kopija. Objekti su menjivi, njihove osobine mogu biti dodavane, brisane i menjane.
- Prenos po vrednosti/vezi: Primitivni tipovi se prenose po vrednosti (kopira se sama vrednost). Objekti se prenose po vezi (kopira se veza na mesto u memoriji gde je objekat).
- Poređenje: Primitivni tipovi se porede po vrednosti. Objekti se porede po vezi (dve promenljive ukazuju na isti objekat u memoriji).
// Primeri
let str1 = "hello";
let str2 = str1; // str2 dobija kopiju vrednosti str1
str1 = "world"; // Kreira se novi niz "world" za str1
console.log(str2); // "hello" - str2 se nije promenio
let obj1 = { name: "Alice" };
let obj2 = obj1; // obj2 dobija vezu na isti objekat kao i obj1
obj1.name = "Bob"; // Menja se svojstvo objekta na koji ukazuju obe promenljive
console.log(obj2.name); // "Bob" - obj2 se promenio
let num1 = 10;
let num2 = 10;
console.log(num1 === num2); // true - vrednosti su iste
let objA = { value: 1 };
let objB = { value: 1 };
console.log(objA === objB); // false - porede se veze (ukazuju na različite objekte, iako imaju isti sadržaj)
Tabela razlika:
| Osobina | Primitivni tipovi | Objekti |
|---|---|---|
| Menjivost | Nepromenljivi | Promenljivi |
| Prenos | Po vrednosti | Po vezi |
| Poređenje | Po vrednosti | Po vezi |
| Skladištenje | Direktno u promenljivoj | Veza na mesto u memoriji |
| Tipovi podataka | String, Number, Boolean, Null, Undefined, Symbol, BigInt | Objekti (uključujući nizove, funkcije i dr.) |