Wertedatentypen - Referenzdatentypen

let maze = [];
 
let innerArray = [1, 2, 3, 4];
for (let i = 0; i < 10; i++) {
  maze.push(innerArray);
}
 
maze[0][3] = 7;
 
// JavaScript Datentypen:
// string
// number
//   integer
//   float
//   double
// boolean
// undefined
// array
// object
// null
 
// Kategorien an Datentypen:
 
// 1. Value Types (Wertdatentypen) / Primitive Datentypen
// string
// number
//   integer
//   float
//   double
// boolean
// undefined
// null
 
let someNumber = 42;
let someOtherNumber = someNumber; // Wert wird kopiert
someNumber = 43;
 
// Bei Wertedatentypen werden die
// Werte bei einer Zuweisung kopiert
 
let someString = "hallo";
let secondString = someString;
someString = "hallo du";
 
// das kopieren der werte passiert nicht nur bei
// variablenzuweisungen sondern auch bei funktionsaufrufen
let someBoolean = true;
function doSomething(aBooleanValue) {
  someBoolean = false;
  console.log("stop");
}
 
doSomething(someBoolean);
 
// 2. Referenzdatentypen (reference types)
// array
// object
 
// Bei diesen Datentypen wird der Wert nicht kopiert
// Es wird eine Referenz übergeben
let someObject = {
  name: "Hugo",
};
 
let otherObject = someObject;
someObject.name = "Helga";
// someObject und otherObject zeigen auf denselben speicherbereich
// wird eine eigenschaft des einen geändert, ist die änderung
// automatisch auch im anderen
 
let arr = [1, 2, 3];
let arr2 = arr;
arr.splice(0, 1, 5);
 
arr = arr.map((n) => n * 2);
 
console.log("hello");
 
let sub = ["SEW", "SYTG", "SYTD", "ITPL", "MEDA"];
sub = sub.slice(-4);
console.log("hello");