⊗jsPmLpDbg 167 of 505 menu

Tips för felsökning av kod med exempel på loopar i JavaScript

Nu ska jag lära dig en metod för att hitta fel i koden. Föreställ dig att du av någon missuppfattning inte följde råden från föregående lektion och fick kod som inte fungerar. Låt oss se hur man hittar fel och får den att fungera.

Många nybörjare använder en felaktig metod för att söka. De tar och tittar på koden, i hopp om att de ska märka felet. Och så i ett par timmar. Det fungerar inte så.

Den korrekta metoden är att skriva ut variabler till konsolen och avgöra om det som finns där är det som behövs, eller inte. Dessutom ska man börja från den förmodade platsen för problemet och gå uppåt i koden. Låt oss titta praktiskt.

Låt som exempel uppgiften vara att gå igenom en array med tvåsiffriga nummer och hitta de tal där den första siffran är en större än den andra. Låt för enkelhetens skull talen i arrayen lagras som strängar.

Låt oss säga att du löste uppgiften och fick följande kod:

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); // ger 0

Koden ger dock 0. I detta fall är det första steget att kontrollera om exekveringen av koden kommer in i if-satsen. Låt oss skriva ut något i konsolen där:

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 inte ut någonting sum += elem; } } console.log(sum);

Eftersom ingenting dök upp i konsolen betyder det att kodexekveringen helt enkelt inte kommer in i villkoret. Låt oss se med våra egna ögon vad det är vi jämför:

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' och '11', '3' och '21' ... if (elem[0] === elem[1] + 1) { sum += elem; } } console.log(sum);

Som ett resultat blir det direkt synligt att den andra termen är tvåsiffrig. Det är lätt att förstå att det beror på att ettan läggs till som en sträng. Låt oss åtgärda problemet:

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

Efter korrigeringen ser vi redan att det har dykt upp något i variabeln sum, även om det är felaktigt. Man kan dock se att det som finns där är det vi behöver, men det har lagts ihop som strängar, inte som tal. Låt oss åtgärda 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; // åtgärdar } } console.log(sum); // allt fungerar

Åtgärda felen som gjorts i följande kod:

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);
Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa