Start · Sprachen · JavaScript · Referenz · console.assert()

console.assert()

Methode

Schreibt eine Fehlermeldung in die Konsole, wenn <code>assertion</code> falsy ist – bei wahrer Behauptung passiert nichts.

seit JavaScript Baseline: alle Browser, Node.js 0.1+ Kategorie: webapi

Signatur

console.assert(assertion, ...data)

Beschreibung

console.assert() prüft einen Ausdruck. Ist er falsy (false, 0, "", null, undefined, NaN), wird eine Meldung auf Fehler-Ebene in die Konsole geschrieben. Die Meldung beginnt mit „Assertion failed“, danach folgen die übergebenen Daten. Ist der Ausdruck truthy, wird nichts ausgegeben.

Die Methode ist praktisch für Plausibilitätsprüfungen während der Entwicklung: Invarianten, erwartete Typen oder Wertebereiche lassen sich damit kurz prüfen, ohne ständig if-Blöcke mit console.error() zu schreiben. Im Browser zeigen die Entwicklerwerkzeuge zusätzlich meist einen Stack-Trace an.

Wichtig: Anders als assert in vielen anderen Sprachen oder als node:assert wirft console.assert() keine Ausnahme. Das Programm läuft also normal weiter. Für echte Absicherungen oder Tests solltest du einen Fehler mit throw auslösen oder ein Test-Framework nutzen.

Wie bei console.log() kannst du beliebig viele Objekte übergeben oder als erstes Datenargument einen Formatstring mit Platzhaltern wie %s, %d, %o oder %O verwenden.

Parameter

Name Typ Default Beschreibung
$assertion Pflicht any Beliebiger Ausdruck. Ist er falsy, wird die Meldung ausgegeben. Ist er truthy, passiert nichts.
$...data any[] Beliebig viele Werte, die ausgegeben werden. Ist das erste davon ein String, kann er Platzhalter wie %s, %d, %i, %f, %o, %O oder %c enthalten, die durch die folgenden Werte ersetzt werden.

Rückgabewert

Typ
undefined
Beschreibung
Kein Rückgabewert. Die Methode erzeugt nur eine Ausgabe in der Konsole und wirft keine Ausnahme.

Beispiele

Einfache Prüfung mit Meldung

const alter = -5;

console.assert(alter >= 0, 'Alter darf nicht negativ sein:', alter);
console.assert(alter < 150, 'Wird nicht ausgegeben, Bedingung ist wahr');
Assertion failed: Alter darf nicht negativ sein: -5

Formatstring mit Platzhaltern

const benutzer = { name: 'Anna', rolle: 'gast' };

console.assert(
  benutzer.rolle === 'admin',
  'Benutzer %s hat die Rolle "%s" statt "admin"',
  benutzer.name,
  benutzer.rolle
);
Assertion failed: Benutzer Anna hat die Rolle "gast" statt "admin"

Invariante in einer Funktion prüfen (Programm läuft weiter)

const berechneDurchschnitt = (werte) => {
  console.assert(Array.isArray(werte) && werte.length > 0, 'Erwarte nicht-leeres Array, erhalten:', werte);
  const summe = werte.reduce((a, b) => a + b, 0);
  return summe / werte.length;
};

const ergebnis = berechneDurchschnitt([]);
console.log('Ergebnis:', ergebnis);
Assertion failed: Erwarte nicht-leeres Array, erhalten: [] Ergebnis: NaN

Ohne Meldung und mit Objekt

const config = { apiUrl: '' };

// Nur die Behauptung übergeben
console.assert(config.apiUrl);

// Objekt direkt übergeben – in den DevTools aufklappbar
console.assert(config.apiUrl, config);
Assertion failed Assertion failed { apiUrl: '' }

// Wichtig · Fallstricke

  • Keine Ausnahme: console.assert() bricht die Ausführung nicht ab. Für Programmlogik oder Tests nutze throw new Error(), node:assert oder ein Test-Framework.
  • Truthy/Falsy beachten: console.assert(0) oder console.assert('') schlagen fehl. Mit console.assert([]) oder console.assert({}) gibt es dagegen keine Meldung, weil leere Arrays und Objekte truthy sind.
  • Argumente werden immer ausgewertet: Auch wenn die Behauptung wahr ist, werden alle Argumente berechnet. Teure Ausdrücke in den Daten kosten also immer Zeit.
  • Node.js: Vor Node.js 10 hat console.assert() einen AssertionError geworfen. Seitdem verhält es sich wie im Browser und gibt nur aus (über stderr).
  • Formatstring: Früher haben einige Browser Platzhalter in console.assert() nicht ersetzt. Heute unterstützen alle aktuellen Browser das.
  • In Produktionscode sollten Assertions per Build-Tool (z. B. Terser mit drop_console) entfernt werden. Sonst landen interne Details in der Konsole der Nutzer.