⊗jsPmLpDbg 167 of 505 menu

Råd for feilsøking i kode med eksempler på løkker i JavaScript

Nå skal jeg lære deg en metode for å søke etter feil i kode. La oss tenke oss at du av en eller annen misforståelse ikke fulgte rådene fra forrige leksjon og endte opp med kode som ikke fungerer. La oss se på hvordan du finner feilene og får den til å fungere.

Mange nybegynnere bruker en feil metode for å søke. De tar og ser på koden, i håp om at de vil legge merke til feilen. Og sitter slik i noen timer. Det fungerer ikke slik.

Den riktige metoden er å logge variabler til konsollen og finne ut om det som ligger der er det som skal være der, eller ikke. I tillegg bør man starte fra det antatte stedet for problemet og bevege seg oppover i koden. La oss se på det i praksis.

La oss for eksempel anta at du hadde oppgaven med å gå gjennom en array med tosifrede tall og finne tallene der det første sifferet er én mer enn det andre. La oss for enkelhets skyld anta at arrayen lagrer tallene som strenger.

La oss si du løste oppgaven og fikk følgende kode:

let arr = ['21', '32', '34', '43', '45', '54', '55']; let sum = 0; for (let elem of arr) { if (elem[0] === elem[1] + 1) { sum += elem; } } console.log(sum); // gir 0

Koden gir imidlertid 0. I dette tilfellet er det første man må sjekke å se om kodeutførelsen kommer inn i if-setningen. La oss logge noe til konsollen inne i den:

let arr = ['21', '32', '34', '43', '45', '54', '55']; let sum = 0; for (let elem of arr) { if (elem[0] === elem[1] + 1) { console.log('!'); // skriver ikke ut noe sum += elem; } } console.log(sum);

Siden ingenting dukket opp i konsollen, betyr det at kodeutførelsen rett og slett ikke kommer inn i betingelsen. La oss se med våre egne øyne hva det er vi sammenligner:

let arr = ['21', '32', '34', '43', '45', '54', '55']; let sum = 0; for (let elem of arr) { console.log(elem[0], elem[1] + 1); // '2' og '11', '3' og '21' ... if (elem[0] === elem[1] + 1) { sum += elem; } } console.log(sum);

Som et resultat blir det umiddelbart synlig at det andre leddet er tosifret. Det er lett å forstå at dette skyldes at enheten legges til som en streng. La oss rette opp problemet:

let arr = ['21', '32', '34', '43', '45', '54', '55']; let sum = 0; for (let elem of arr) { if (+elem[0] === +elem[1] + 1) { // retter opp sum += elem; } } console.log(sum); // '021324354'

Etter rettingen ser vi allerede at det har dukket opp noe i variabelen sum, selv om det er feil. Det er imidlertid tydelig at det som ligger der er det vi trenger, men det ble lagt sammen som strenger, ikke tall. La oss rette opp problemet:

let arr = ['21', '32', '34', '43', '45', '54', '55']; let sum = 0; for (let elem of arr) { if (+elem[0] === +elem[1] + 1) { sum += +elem; // retter opp } } console.log(sum); // alt fungerer

Rett feilene som er gjort i følgende kode:

let obj = {a: 10, b: 20, c: 30, d: 40, e: 50}; let sum = 0; for (let elem in obj) { if (elem[0] === '1' && elem[0] === '2') { sum += +elem; } } console.log(sum);
Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis