Vad är "assert" i JavaScript?


Vad betyder assert i JavaScript?

Jag har sett något som:

assert(function1() && function2() && function3(), "some text");

Och skulle vilja veta vad metoden assert() gör.

Svar #1

Det finns ingen standard assert i JavaScript självt. Kanske använder du något bibliotek som tillhandahåller en; till exempel, om du använder Node.js, använder du kanske assertionsmodulen. (Webbläsare och andra miljöer som erbjuder en konsol som implementerar Console API tillhandahåller console.assert.)

Den vanliga betydelsen av en assert-funktion är att kasta ett fel om uttrycket som skickas in i funktionen är falskt; detta är en del av det allmänna konceptet med assertionskontroll. Vanligtvis används assertions (som de kallas) endast i "test"- eller "debug"-byggnader och tas bort från produktionskod.

Anta att du hade en funktion som skulle alltid acceptera en sträng. Du skulle vilja veta om någon kallade den funktionen med något som inte var en sträng (utan att ha ett typkontrollager som TypeScript eller Flow). Så du kanske gör:

assert(typeof argumentName === "string");

...där assert skulle ge ett fel om villkoret var falskt.

En mycket enkel version skulle se ut så här:

function assert(condition, message) {
    if (!condition) {
        throw message || "Assertion failed";
    }
}

Ännu bättre, använd Error-objektet, vilket har fördelen att samla en stackspårning och liknande:

function assert(condition, message) {
    if (!condition) {
        throw new Error(message || "Assertion failed");
    }
}

Svar #2

Om du använder en modern webbläsare eller nodejs kan du använda console.assert(expression, object).

För mer information:

  • Chrome API-referens
  • Firefox-webbkonsol
  • Firebug-konsol-API
  • IE-konsol-API
  • Opera Dragonfly
  • Nodejs Console API

Svar #3

De andra svaren är bra: det finns ingen assert-funktion inbyggd i ECMAScript5 (t.ex. JavaScript som fungerar i princip överallt) men vissa webbläsare ger dig det eller har tillägg som tillhandahåller den funktionaliteten. Även om det förmodligen är bäst att använda ett väl etablerat/populärt/underhållet bibliotek för detta, kan en "fattigmans assert"-funktion för akademiska ändamål se ut ungefär så här:

const assert = function(condition, message) {
    if (!condition)
        throw Error('Assert failed: ' + (message || ''));
};

assert(1 === 1); // Executes without problem
assert(false, 'Expected true');
// Yields 'Error: Assert failed: Expected true' in console

Svar #4

assert() är inte en inbyggd JavaScript-funktion. Det är en anpassad funktion som någon har skapat. Du måste leta efter den på din sida eller i dina filer och posta den för att någon ska kunna hjälpa till att avgöra vad den gör.

Relaterade artiklar