Junior
Kāda ir atšķirība starp dažādiem datu tipiem?
sobes.tech AI
Atbilde no AI
JavaScript dati ir sadalīti galvenajos tipos un objekti.
Galvenie tipi:
- String: Rakstzīmju secība. Nemainīga.
- Number: Skaitļi, ieskaitot veselos un ar peldošo punktu, kā arī
Infinity,-InfinityunNaN. - Boolean: Loģiska vērtība (
truevaifalse). - Null: Īpaša vērtība, kas apzīmē objekta neesamību.
- Undefined: Mainīgā vērtība, kurai nav piešķirta vērtība.
- Symbol: Unikāls un nemainīgs galvenais tips, kas tiek izmantots objekta īpašību identifikatoriem.
- BigInt: Neierobežota garuma veseli skaitļi.
Objekti:
- Object: Atslēgu-vērtību pāru kolekcija. Maināms. Piemēri: masīvi, funkcijas, regulāras izteiksmes, datumi.
Galvenās atšķirības:
- Maināmība (Mutability): Galvenie tipi ir nemaināmi, t.i., to vērtību tieši mainīt nav iespējams. Mēģinot mainīt, tiek izveidots jauns kopums. Objekti ir maināmi, to īpašības var tikt pievienotas, dzēstas un mainītas.
- Pārsūtīšana pēc vērtības/saite: Galvenie tipi tiek pārsūtīti pēc vērtības (kopēta tiek pati vērtība). Objekti tiek pārsūtīti pēc saites (kopēta ir saite uz vietu atmiņā, kur glabājas objekts).
- Salīdzināšana: Galvenie tipi tiek salīdzināti pēc vērtības. Objekti tiek salīdzināti pēc saites (divas mainīgās norāda uz vienu un to pašu objektu atmiņā).
// Piemēri
let str1 = "hello";
let str2 = str1; // str2 saņem str1 vērtības kopiju
str1 = "world"; // Tiek izveidots jauns virkne "world" priekš str1
console.log(str2); // "hello" - str2 nemainījās
let obj1 = { name: "Alice" };
let obj2 = obj1; // obj2 saņem atsauci uz to pašu objektu, kas ir obj1
obj1.name = "Bob"; // Mainās objekta īpašība, uz kuru norāda abas mainīgās
console.log(obj2.name); // "Bob" - obj2 mainījās
let num1 = 10;
let num2 = 10;
console.log(num1 === num2); // true - vērtības ir vienādas
let objA = { value: 1 };
let objB = { value: 1 };
console.log(objA === objB); // false - saites tiek salīdzinātas (norāda uz dažādiem objektiem, lai gan saturs ir vienāds)
Atšķirību tabula:
| Īpašība | Galvenie tipi | Objekti |
|---|---|---|
| Maināmība | Nemaināmi | Maināmi |
| Pārsūtīšana | Pēc vērtības | Pēc saites |
| Salīdzināšana | Pēc vērtības | Pēc saites |
| Glabāšana | Tieši mainīgajā | Saite uz vietu atmiņā |
| Datu tipi | String, Number, Boolean, Null, Undefined, Symbol, BigInt | Objekti (ieskaitot masīvus, funkcijas un citus) |