Sobes.tech
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, -Infinity en NaN.
  • Boolean: Logische waarde (true of false).
  • 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:

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