Hva er «assert» i JavaScript?


Hva betyr assert i JavaScript?

Jeg har sett noe sånt som:

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

Og vil gjerne vite hva metoden assert() gjør.

Svar #1

Det finnes ingen standard assert i JavaScript selv. Kanskje du bruker et bibliotek som tilbyr en; for eksempel, hvis du bruker Node.js, kanskje du bruker modulen for assert. (Nettlesere og andre miljøer som tilbyr en konsoll som implementerer Console API gir console.assert.)

Den vanlige betydningen av en assert-funksjon er å kaste en feil hvis uttrykket som sendes inn i funksjonen er falskt; dette er en del av det generelle konseptet med påstandsjekking. Vanligvis brukes påstander (som de kalles) bare i "testing"- eller "debug"-versjoner og fjernes fra produksjonskode.

Anta at du hadde en funksjon som skulle alltid akseptere en streng. Du ville ønske å vite om noen kalte den funksjonen med noe som ikke var en streng (uten å ha et typetjekklag som TypeScript eller Flow). Så du kan gjøre:

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

...hvor assert ville kaste en feil hvis betingelsen var falsk.

En veldig enkel versjon ville se slik ut:

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

Enda bedre, bruk Error-objektet, som har fordelen av å samle en stack trace og lignende:

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

Svar #2

Hvis du bruker en moderne nettleser eller nodejs, kan du bruke console.assert(expression, object).

For mer informasjon:

  • Chrome API-referanse
  • Firefox-nettkonsoll
  • Firebug-konsoll-API
  • IE-konsoll-API
  • Opera Dragonfly
  • Nodejs konsoll-API

Svar #3

De andre svarene er gode: det finnes ikke en assert-funksjon innebygd i ECMAScript5 (f.eks. JavaScript som fungerer i praksis overalt), men noen nettlesere gir deg det eller har tillegg som gir den funksjonaliteten. Selv om det sannsynligvis er best å bruke et veletablert/populært/vedlikeholdt bibliotek for dette, kan en "fattigmanns assert"-funksjon for akademiske formål se omtrent slik ut:

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() er ikke en innebygd JavaScript-funksjon. Det er en egendefinert funksjon som noen har laget. Du må lete etter den på siden din eller i filene dine og legge den ut for at noen skal kunne hjelpe med å finne ut hva den gjør.

Relaterte artikler