JavaScript Grundlagen: Der Einstieg mit var/let/const, DOM, Events und Übungen

Klarer Einstieg in JavaScript: Setup, var/let/const, Funktionen, DOM, Events. Mit Beispielen, Übungen mit Lösungen und Tipps gegen typische Anfängerfehler.

Hast du dich schon einmal gefragt, warum sich eine Webseite wie von Zauberhand verändert, wenn du auf einen Button klickst oder ein Formular ausfüllst? Genau hier beginnt die Magie von JavaScript. Mit JavaScript machst du statische Seiten lebendig, aktualisierst Inhalte ohne Reload und baust Interaktionen, die Nutzer wirklich nutzen. Suchst du einen klaren Einstieg? Perfekt. Wir tauchen gemeinsam in die JavaScript Grundlagen ein – verständlich, praxisnah, Schritt für Schritt.

In den nächsten Abschnitten richten wir dein erstes Setup ein, klären den Unterschied zwischen var, let und const, schreiben kleine Funktionen, greifen aufs DOM zu und reagieren auf Events. Alles, was du brauchst: einen Browser und Neugier. Fehler? Gehören dazu. Wir schauen uns typische Stolpersteine an und räumen sie aus dem Weg. Programmieren fühlt sich oft an wie Puzzeln – nur mit sofort sichtbarem Ergebnis. Bereit? Los geht’s!

JavaScript Grundlagen: Überblick, Setup und erster Start

JavaScript ist die Sprache des Webs. Sie läuft in jedem modernen Browser und – dank Node.js – auch außerhalb davon auf deinem Rechner oder Server. Mit ihr bestimmst du, wie eine Seite auf Nutzer reagiert, Daten lädt, Elemente verändert oder Animationen abspielt. Kurz: Ohne JavaScript wäre das Web stumm. Mit JavaScript spricht es mit dir – und zwar in Echtzeit.

Was ist JavaScript? Wo läuft es?

Ursprünglich entstand JavaScript, um Webseiten dynamisch zu machen. Heute ist sie überall: im Frontend, im Backend (Node.js), in Desktop-Apps (Electron) und sogar auf IoT-Geräten. Der Browser liefert dir dafür eine Laufzeitumgebung mit DOM (Document Object Model) und Web-APIs wie fetch, localStorage oder Geolocation. Node.js unterscheidet sich: Dort hast du stattdessen Zugriff auf Dateisystem, Prozesse und Netzwerk.

Kurzer Reality-Check: JavaScript ist dynamisch typisiert, hat First-Class-Funktionen und arbeitet mit einem Event-Loop für asynchrone Abläufe. Klingt trocken? Wird spannend, sobald du echte Probleme löst – Formulare validieren, Inhalte nachladen, ein Mini-Spiel bauen. Kleine Schritte, schnelle Erfolge. Das motiviert.

Wenn du tiefer eintauchen willst, ist die Referenz von MDN Web Docs Gold wert. Lies weniger, probier mehr: laufender Code ist dein bester Lehrer. Frag dich dabei ruhig: Was passiert, wenn ich diese Zeile ändere?

Erstes Setup: Browser-Konsole und Editor

Starte leicht: Öffne irgendeine Seite im Browser, drücke F12 (oder Rechtsklick > Untersuchen) und wechsle in die Konsole. Tipp ein: console.log(“Hallo Welt”) und drücke Enter. Zack – Code ausgeführt, ganz ohne Installation.

Für Projekte lohnt sich ein Editor wie VS Code. Du bekommst Syntax-Highlighting, Autovervollständigung und hilfreiche Tools. Erstelle eine index.html und binde ein Script ein:

<!DOCTYPE html>
<html lang="de">
  <head><meta charset="utf-8"><title>Start</title></head>
  <body>
    <h1>Mein erster JS-Test</h1>
    <script>
      console.log('Los geht’s!');
      document.body.style.background = '#f5f7ff';
    </script>
  </body>
</html>

Speichern, öffnen, Wirkung sehen – so lernst du am schnellsten. Später, wenn du Daten verarbeiten oder ein Backend ansprechen willst, hilft dir Node.js. Für den Einstieg reicht der Browser völlig. Keep it simple. Build it up. Und wenn etwas nicht klappt: kurz durchatmen, in der Konsole nachsehen – was sagt die Fehlermeldung?

Variablen in JavaScript: Unterschied zwischen var, let und const

Variablen sind das Gedächtnis deines Programms. In JavaScript gibt es var, let und const. Alle drei speichern Werte, unterscheiden sich aber in Scope, Änderbarkeit und Hoisting. Verstehst du das einmal, vermeidest du einen Großteil der typischen Anfängerfehler.

Deklaration, Scope, Mutability und Hoisting

Beginnen wir mit einem Überblick. Die folgende Tabelle macht die Unterschiede greifbar:

Merkmalvarletconst
ScopeFunktions- oder globaler ScopeBlock-ScopeBlock-Scope
Neu-Zuweisungerlaubterlaubtnicht erlaubt
Neu-Deklaration im gleichen Scopeerlaubtnicht erlaubtnicht erlaubt
Hoistingja (mit Initialisierung zu undefined)ja (TDZ – Zugriff vor Deklaration wirft Fehler)ja (TDZ – Zugriff vor Deklaration wirft Fehler)

Kurz erklärt: var ist „alte Schule“ – flexibel, aber fehleranfällig, weil es funktionsweit gilt und neu deklariert werden kann. let ist moderner und sicherer dank Block-Scope. const nutzt du für Werte, die nicht neu zugewiesen werden sollen (Achtung: Inhalte von Objekten/Arrays bleiben veränderbar).

Beispiel:

function demo() {
  if (true) {
    var a = 1;    // sichtbar in demo()
    let b = 2;    // nur im if-Block
    const c = 3;  // nur im if-Block
  }
  console.log(a); // 1
  // console.log(b); // ReferenceError
}

Hoisting heißt: Deklarationen werden nach oben „gezogen“. Bei var erhältst du undefined statt eines Fehlers, wenn du vor der Deklaration zugreifst. Bei let/const existiert bis zur Deklaration die temporäre tote Zone (TDZ) – ein Zugriff führt zu einem Fehler. Faustregel: TDZ schützt dich vor Phantomwerten.

Praxisleitfaden: Wann var, let oder const?

Wenn du schnell entscheiden willst, gilt:

  • Standardmäßig const nutzen; das dokumentiert Absicht und verhindert versehentliche Zuweisungen.
  • Wenn du neu zuweisen musst (z. B. in Schleifen oder bei Berechnungen), nimm let.
  • var nur für Legacy-Code oder wenn du bewusst funktionsweiten Scope brauchst.
  • In for-of/for-in-Schleifen mit Closures ist let dein Freund: pro Iteration ein eigenes Binding.
  • Für Objekte/Arrays: const für die Referenz, intern gezielt mutieren.

Merksatz: Erst const, dann let, var gar nicht. Damit bleibt dein Code stabil und lesbar. Die MDN-Referenz zu Variablen liefert tiefergehende Beispiele, wenn du ins Detail willst.

JavaScript Funktionen verstehen mit kurzen Beispielen

Funktionen sind kleine Maschinen: Du gibst Eingaben, bekommst Ergebnisse. Je klarer sie sind, desto zuverlässiger dein Code. Hier lernst du Parameter, Rückgabewerte, Default-Werte, Scope, Closures und den this-Kontext kennen – leicht verdaulich und direkt einsetzbar. Frag dich beim Lesen: Kann ich das heute noch in einem Mini-Projekt ausprobieren?

Parameter, Rückgabewerte und Default-Werte

Der einfachste Start:

function add(a, b = 0) {
  return a + b;
}
console.log(add(2, 3)); // 5
console.log(add(5));    // 5 (weil b=0)

Arrow Functions sind kompakt:

const times = (x, y = 1) => x * y;

Ein Mini-Fall aus der Praxis: In einem Onlineshop berechnest du Rabatte. Mit Default-Werten vermeidest du if-Kaskaden:

function price(total, discount = 0) {
  return total - total * discount;
}

Schreibe kleine, testbare Funktionen. Viele kleine Hebel bewegen mehr als ein großer.

Diagramm: Scope, Closure und this – JavaScript Grundlagen

Scope, Closures und der this-Kontext

Scope bestimmt, wo Variablen sichtbar sind. Closure bedeutet: Eine Funktion merkt sich den Kontext, in dem sie entstanden ist. Das ermöglicht elegante Konstruktionen:

function counter(start = 0) {
  let value = start;
  return function step() {
    value++;
    return value;
  };
}
const c = counter(10);
console.log(c()); // 11
console.log(c()); // 12

Der this-Kontext hängt davon ab, wie du eine Funktion aufrufst. In Methoden zeigt this auf das Objekt, bei Event-Handlern auf das Element, und in Arrow Functions wird this aus dem umgebenden Scope übernommen:

const obj = {
  n: 1,
  inc() { this.n++; }
};
obj.inc();
 
const incLater = obj.inc;
// incLater(); // this wäre undefined im Strict Mode
 
const safeInc = () => obj.inc();
safeInc();

Merke: Arrow Functions sind super für Callbacks, aber nicht als Methoden, wenn du this brauchst. Eine klare this-Entscheidung macht Code oft sofort verständlicher.

DOM-Manipulation mit JavaScript für Einsteiger

Das DOM ist die objektorientierte Darstellung deines HTML. Darüber liest du Inhalte aus, passt Texte an, setzt Klassen oder Styles und fügst neue Elemente ein. Der Effekt ist unmittelbar im Browser sichtbar – ein perfekter Lernverstärker. Schon mal erlebt, wie ein Buttonklick einen ganzen Bereich umsortiert? Genau das machst du gleich selbst.

Elemente auswählen und Inhalte ändern

Der klassische Einstieg: querySelector und querySelectorAll. Damit greifst du per CSS-Selektor auf Elemente zu.

<h2 id="title">Hallo</h2>
<p class="msg">Willkommen!</p>
const title = document.querySelector('#title');
const message = document.querySelector('.msg');
 
title.textContent = 'Hi there';
message.innerHTML = '<strong>Schön, dass du da bist!</strong>';

Wenn du neue Elemente hinzufügen willst, nutze createElement und append:

const list = document.createElement('ul');
['Eins','Zwei','Drei'].forEach(item => {
  const li = document.createElement('li');
  li.textContent = item;
  list.append(li);
});
document.body.append(list);

Kleines Fallbeispiel: Eine Vereinsseite ersetzte manuelle News-Updates durch ein Script, das Überschriften und Datum automatisch aus JSON-Daten rendert. Ergebnis: 70% weniger Pflegeaufwand und keine veralteten Inhalte mehr. Automatisierung ist Fleißarbeit, die nicht müde wird.

DOM Auswahl und Änderung – javascript einführung

Klassen, Attribute und Styles dynamisch setzen

Mit classList fügst du Klassen hinzu oder entfernst sie. Ideal für UI-Zustände:

document.querySelector('#title').classList.toggle('highlight');

Attribute und Styles steuerst du so:

const img = document.createElement('img');
img.setAttribute('alt', 'Logo');
img.src = 'logo.png';
img.style.width = '120px';
document.body.append(img);

Praxistipp: Nutze data-Attribute für Zustände oder IDs, die du im Script auslesen willst. Und wenn du tiefer in Selektoren einsteigen willst, hilft dir die MDN-Seite zu document.querySelector.

JavaScript Events: click, input und keyup einfach erklärt

Ohne Events keine Interaktion. Mit addEventListener reagierst du auf Klicks, Texteingaben oder Tastaturereignisse. Das Muster bleibt gleich: Element auswählen, Event anhängen, Callback schreiben. Fertig ist der interaktive Baustein. Wie könnte dein aktuelles Projekt mit einem einzigen Listener schon besser werden?

click, input, keyup: typische Use-Cases

Ein Button, der Text umschaltet:

const btn = document.createElement('button');
btn.textContent = 'Toggle';
const box = document.createElement('div');
box.textContent = 'Ich bin sichtbar';
 
document.body.append(btn, box);
 
btn.addEventListener('click', () => {
  box.hidden = !box.hidden;
});

input eignet sich für Live-Validierung:

const field = document.createElement('input');
const hint = document.createElement('p');
document.body.append(field, hint);
 
field.addEventListener('input', () => {
  hint.textContent = field.value.length < 3 ? 'Mind. 3 Zeichen' : 'Sieht gut aus!';
});

keyup ist praktisch für Tastenkürzel:

document.addEventListener('keyup', (e) => {
  if (e.key === 'Escape') {
    console.log('Dialog schließen');
  }
});

Ein gutes Ergänzungsvideo: der kostenlose Einsteigerkurs von freeCodeCamp. Kapitel zu Events sind mit drin und helfen beim Dranbleiben.

Event-Listener, Delegation und preventDefault

Event-Delegation spart Listener: Statt hundert Buttons einzeln zu versehen, hörst du auf das übergeordnete Element und prüfst das Ziel.

document.body.addEventListener('click', (e) => {
  if (e.target.matches('button.remove')) {
    e.target.closest('li').remove();
  }
});

preventDefault verhindert Standardaktionen – z. B. das Senden eines Formulars:

const form = document.querySelector('form');
form.addEventListener('submit', (e) => {
  e.preventDefault();
  console.log('Validieren und erst dann senden');
});

Wenn du Details zu Event-Modellen suchst, liefert MDN mit addEventListener präzise Erklärungen und Browser-Besonderheiten. Merksatz: Ein guter Listener ist fokussiert, kurz und testbar. Knappe Funktionen, klare Wirkung.

JavaScript Grundlagen: Übungsaufgaben mit Lösungen und typische Anfängerfehler

Zeit für Praxis: Drei Mini-Übungen festigen dein Wissen. Danach schauen wir auf häufige Fehler – und wie du sie vermeidest. Lernen heißt: ausprobieren, scheitern, verbessern. Welches Mini-Projekt willst du danach bauen?

JavaScript Grundlagen Übungsaufgaben mit Lösungen

  1. Rechne Netto-Preis aus:

Aufgabe: Schreibe eine Funktion priceNetto(brutto, steuerSatz), die den Nettopreis zurückgibt.

Lösung:

function priceNetto(brutto, steuerSatz = 0.19) {
  return brutto / (1 + steuerSatz);
}
console.log(priceNetto(119, 0.19).toFixed(2)); // 100.00
  1. Toggle-Text mit Button:

Aufgabe: Ein Button soll zwischen „Start“ und „Stop“ wechseln.

Lösung:

const b = document.createElement('button');
b.textContent = 'Start';
 
document.body.append(b);
 
b.addEventListener('click', () => {
  b.textContent = b.textContent === 'Start' ? 'Stop' : 'Start';
});
  1. Wortzähler für Eingabefeld:

Aufgabe: Zähle die Wörter in einem Textfeld und zeige die Zahl live an.

Lösung:

const t = document.createElement('textarea');
const info = document.createElement('p');
document.body.append(t, info);
 
t.addEventListener('input', () => {
  const words = t.value.trim().split(/\s+/).filter(Boolean);
  info.textContent = `Wörter: ${words.length}`;
});

Ein Praxis-Mini-Case: Eine kleine NGO baute ein Formular mit Live-Feedback für Pflichtfelder. Ergebnis: 25% weniger Abbrüche, weil Nutzer sofort sahen, was fehlt. Kleine UX-Helfer, große Wirkung.

Typische Anfängerfehler in JavaScript und wie du sie vermeidest

  • Mit var statt let/const arbeiten: Nutze const als Standard, let bei Bedarf. So verhinderst du schleichende Zuweisungen.
  • Gleichheitsoperator verwechseln: === statt ==, um unerwartete Typkonvertierungen zu vermeiden.
  • DOM-Selektoren zu breit: Nutze spezifische Selektoren oder data-Attribute, damit du nicht „zu viel“ triffst.
  • Zu viel Logik in Event-Handlern: Delegiere an kleine Hilfsfunktionen; das macht testbar und übersichtlich.
  • Fehlendes Error-Handling bei fetch: Prüfe response.ok und fange Fehler, sonst jagst du Phantom-Bugs.

Abschließender Tipp: Baue regelmäßig Mini-Projekte. Heute ein Wortzähler, morgen ein To-Do-Widget. Konstante kleine Schritte schlagen seltene Marathons. Und wenn du hängst, hilft oft ein Blick in MDN – oder du reduzierst das Problem auf die kleinste überprüfbare Einheit. Genau dort liegt der Aha-Moment.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert