Signatur
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
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');
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
);
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);
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);
// Wichtig · Fallstricke
- Keine Ausnahme:
console.assert()bricht die Ausführung nicht ab. Für Programmlogik oder Tests nutzethrow new Error(),node:assertoder ein Test-Framework. - Truthy/Falsy beachten:
console.assert(0)oderconsole.assert('')schlagen fehl. Mitconsole.assert([])oderconsole.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()einenAssertionErrorgeworfen. Seitdem verhält es sich wie im Browser und gibt nur aus (überstderr). - 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.