Junior
Wat is het verschil tussen de verschillende datatypes?
sobes.tech AI
Antwoord van AI
In JavaScript worden gegevens onderverdeeld in primitieve types en objecten.
Primitieve types:
- String: Reeks tekens. Onveranderlijk.
- Number: Getallen, inclusief gehele en kommagetallen, evenals
Infinity,-InfinityenNaN. - Boolean: Logische waarde (
trueoffalse). - Null: Speciale waarde die het ontbreken van een object aangeeft.
- Undefined: Waarde van een variabele waaraan geen waarde is toegekend.
- Symbol: Uniek en onveranderlijk primair type, gebruikt voor identificatie van objecteigenschappen.
- BigInt: Gehele getallen van willekeurige lengte.
Objecten:
- Object: Collectie van sleutel-waardeparen. Aanpasbaar. Voorbeelden: arrays, functies, reguliere expressies, datums.
Belangrijkste verschillen:
- Aanpasbaarheid (Mutability): Primitieve types zijn onveranderlijk, dat wil zeggen dat hun waarde niet direct kan worden gewijzigd. Bij een poging tot wijziging wordt een nieuwe kopie gemaakt. Objecten zijn aanpasbaar, hun eigenschappen kunnen worden toegevoegd, verwijderd en gewijzigd.
- Door waarde/door referentie: Primitieve types worden door waarde doorgegeven (de waarde zelf wordt gekopieerd). Objecten worden door referentie doorgegeven (de referentie naar de locatie in het geheugen waar het object is opgeslagen wordt gekopieerd).
- Vergelijking: Primitieve types worden op waarde vergeleken. Objecten worden op referentie vergeleken (twee variabelen verwijzen naar hetzelfde object in het geheugen).
// Voorbeelden
let str1 = "hello";
let str2 = str1; // str2 krijgt een kopie van de waarde van str1
str1 = "world"; // Er wordt een nieuwe string "world" gemaakt voor str1
console.log(str2); // "hello" - str2 is niet veranderd
let obj1 = { name: "Alice" };
let obj2 = obj1; // obj2 krijgt de referentie naar hetzelfde object als obj1
obj1.name = "Bob"; // De eigenschap van het object wordt gewijzigd
console.log(obj2.name); // "Bob" - obj2 is veranderd
let num1 = 10;
let num2 = 10;
console.log(num1 === num2); // true - de waarden worden vergeleken
let objA = { value: 1 };
let objB = { value: 1 };
console.log(objA === objB); // false - de referenties worden vergeleken (verschillende objecten, ook al hebben ze dezelfde inhoud)
Verschil tabel:
| Kenmerk | Primitieve types | Objecten |
|---|---|---|
| Aanpasbaarheid | Onveranderlijk | Aanpasbaar |
| Door | Door waarde | Door referentie |
| Vergelijking | Op waarde | Op referentie |
| Opslag | Direct in de variabele | Referentie naar geheugenlocatie |
| Gegevenstypen | String, Number, Boolean, Null, Undefined, Symbol, BigInt | Object (inclusief arrays, functies, enz.) |