JavaScript Academy · Lektion

E1 — Udtryksevaluator (del 1: + og - fra venstre mod højre)

Implementér en lille evaluator, der håndterer + og - fra venstre mod højre. Tokenisér cifre og operatorer, ignorér mellemrum, og tilføj enkle kontroller.

Lektion 1 af 38 trin

E1 — Udtryksevaluator (del 1: + og - fra venstre mod højre) er en gratis JavaScript Academy-lektion på CoddyKit. Dette er lektion 1 af 3. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i JavaScript Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. JavaScript Academy-kurset indeholder 3 lektioner i alt.

Det bygger vi

Mål: Evaluér små matematiske tekststrenge med kun + og -.

  • Tokenisér tal og operatorer
  • Ignorér mellemrum
  • Beregn fra venstre mod højre
  • Tilføj enkle fejlkontroller
E1 — Udtryksevaluator (del 1: + og - fra venstre mod højre) — illustration 1

Tokeniseringsfunktion: tal og operatorer

Tokenizeren opbygger tal ud fra cifre og returnerer en liste som [12, "+", 3, "-", 4].

// Tokenize: split into numbers and operators; ignore spaces
function tokenize(expr) {
  if (typeof expr !== "string") return null;

  const tokens = [];
  let num = "";

  for (let i = 0; i < expr.length; i = i + 1) {
    const ch = expr[i];

    if (ch === " ") {
      // skip spaces
      continue;
    }

    if (ch >= "0" && ch <= "9") {
      // build number
      num = num + ch;
    } else if (ch === "+" || ch === "-") {
      // flush pending number
      if (num.length > 0) {
        tokens.push(Number(num));
        num = "";
      }
      tokens.push(ch);
    } else {
      // unsupported character
      return null;
    }
  }

  if (num.length > 0) tokens.push(Number(num));
  return tokens;
}

console.log("tokens:", tokenize("12 + 3 - 4"));
E1 — Udtryksevaluator (del 1: + og - fra venstre mod højre) — illustration 2

Beregn fra venstre mod højre (+/-)

Beregn fra venstre mod højre. Vi håndterer endnu ikke operatorprioritet eller parenteser.

// Evaluate tokens left-to-right for + and - only
function evalPlusMinus(tokens) {
  if (!Array.isArray(tokens) || tokens.length === 0) return null;

  // result starts with first number
  let acc = tokens[0];
  if (typeof acc !== "number") return null;

  // step through [op, num] pairs
  for (let i = 1; i < tokens.length; i = i + 2) {
    const op = tokens[i];
    const val = tokens[i + 1];

    if ((op !== "+" && op !== "-") || typeof val !== "number") {
      return null;
    }

    if (op === "+") acc = acc + val;
    else acc = acc - val;
  }

  return acc;
}

console.log("eval 10-3-2:", evalPlusMinus([10, "-", 3, "-", 2]));
E1 — Udtryksevaluator (del 1: + og - fra venstre mod højre) — illustration 3

Sikker indpakning

Opret en sikker indpakning, der returnerer enten en værdi eller en kort fejltekst til begyndere.

// Glue the pieces: from string to result
function evalExprSimple(expr) {
  const tokens = tokenize(expr);
  if (tokens === null) {
    return { ok: false, error: "Invalid character" };
  }
  const result = evalPlusMinus(tokens);
  if (typeof result !== "number") {
    return { ok: false, error: "Invalid sequence" };
  }
  return { ok: true, value: result };
}

console.log("12 + 3 - 4 =", evalExprSimple("12 + 3 - 4"));
console.log("bad char   =", evalExprSimple("2 + a"));
E1 — Udtryksevaluator (del 1: + og - fra venstre mod højre) — illustration 4

Kør små eksempler

Hold eksemplerne små. Vi tilføjer operatorprioritet, parenteser og unært minus i senere afsnit.

// A few quick checks
const cases = [
  "0-3",
  "7+5",
  "10-3-2",
  "2 + 2 + 2",
  "9 - 1 + 1"
];

for (const c of cases) {
  const r = evalExprSimple(c);
  console.log(c, "=>", r.ok ? r.value : r.error);
}

// Note: unary minus (like "-3+2") not handled yet
// This simple version expects a number first
E1 — Udtryksevaluator (del 1: + og - fra venstre mod højre) — illustration 5

Vejledning til begyndere

Råd:

  • Start med et begrænset omfang (+ og - בלבד).
  • Returnér korte fejl i stedet for at kaste fejl.
  • Skriv små hjælpefunktioner (tokenize, eval).
  • Tilføj funktionalitet trin for trin.
E1 — Udtryksevaluator (del 1: + og - fra venstre mod højre) — illustration 6

Test af venstre-mod-højre-adfærd

Hurtigt tjek: Resultat fra venstre mod højre.

E1 — Udtryksevaluator (del 1: + og - fra venstre mod højre) — illustration 7

Opsamling

Opsamling: Tokenisér tal og +/-, ignorér mellemrum, og beregn fra venstre mod højre. Returnér korte fejl. Næste trin: operatorprioritet og parenteser.

E1 — Udtryksevaluator (del 1: + og - fra venstre mod højre) — illustration 8
Gratis at komme i gang

Lær JavaScript med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
59
Lektioner
200

Ofte stillede spørgsmål

Er lektionen “E1 — Udtryksevaluator (del 1: + og - fra venstre mod højre)” gratis?

Ja — alle 3 lektioner i læringssporet JavaScript Academy, inklusive “E1 — Udtryksevaluator (del 1: + og - fra venstre mod højre)”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. JavaScript Academy-kurset indeholder 3 lektioner i alt.

Hvad lærer jeg i “E1 — Udtryksevaluator (del 1: + og - fra venstre mod højre)”?

Implementér en lille evaluator, der håndterer + og - fra venstre mod højre. Tokenisér cifre og operatorer, ignorér mellemrum, og tilføj enkle kontroller. Du øver dig i JavaScript Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på JavaScript Academy?

Der kræves ingen tidligere erfaring. JavaScript Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 3.

Hvor lang tid tager lektionen “E1 — Udtryksevaluator (del 1: + og - fra venstre mod højre)”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne JavaScript Academy-lektion?

Ja. Alle JavaScript Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. E1 — Udtryksevaluator (del 1: + og - fra venstre mod højre)
  2. E2 — Loganalysator (enkle filtre og tællere)
  3. E3 — Promise-pool/-kø (asynkron samtidighed)
← Tilbage til JavaScript Academy