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.
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

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"));
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]));
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"));

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

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.

Test af venstre-mod-højre-adfærd
Hurtigt tjek: Resultat fra venstre mod højre.

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.

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
- E1 — Udtryksevaluator (del 1: + og - fra venstre mod højre)
- E2 — Loganalysator (enkle filtre og tællere)
- E3 — Promise-pool/-kø (asynkron samtidighed)