Sobes.tech
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, -Infinity i NaN.
  • Boolean: Logička vrednost (true ili false).
  • 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:

  1. 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.
  2. 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).
  3. 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.)