⊗jsPmLpDbg 167 of 505 menu

Kodo derinimo patarimai naudojant ciklų JavaScript pavyzdžius

Dabar aš išmokysiu jus klaidų paieškos metodiką kode. Įsivaizduokime, kad dėl kažkokios nepasisekimų jūs nesekėte patarimais iš ankstesnės pamokos ir gavote neveikiantį kodą. Pažiūrėkime, kaip rasti klaidas ir priversti jį veikti.

Daugelis pradedančiųjų naudoja neteisingą paieškos metodiką. Jie ima ir žiūri į kodą, vildamiesi, kad pastebės klaidą. Ir taip porą valandų. Tai taip neveikia.

Teisinga metodika yra kintamųjų išvedimas į konsolę ir nustatymas, ar ten yra tai, ko reikia, ar ne. Be to, pradėti reikia nuo tariamos problemos vietos ir judėti aukštyn kodu. Pažiūrėkime praktiškai.

Tarkime, pavyzdžiui, prieš jus buvo užduotis išrinkti masyvą su dviženkliais skaičiais ir rasti skaičius, kurių pirmas skaitmuo vienu didesnis už antrąjį. Tarkime, kad paprastumo dėlei masyve saugomi skaičiai eilutės pavidalu.

Tarkime, jūs išsprendėte problemą ir gavote tokį 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); // duoda 0

Tačiau kodas duoda 0. Šiuo atveju pirmiausia reikia patikrinti, ar žiūrime, kas yra kintamajame, ar kodas patenka į if. Išveskime ką nors į konsolę:

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('!'); // nieko neišveda sum += elem; } } console.log(sum);

Kadangi konsolėje nieko nepasirodė, tai reiškia, kad kodas tiesiog neįeina į sąlygą. Pažiūrėkime savo akimis, ką mes lyginame:

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

Dėl to iškart tampa matoma, kad antrasis dėmuo yra dviženklis. Nesunku suprasti, kad taip yra dėl to, kad vienetas pridedamas kaip eilutė. Išspręskime problemą:

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

Po pataisymo jau matome, kad kintamajame sum kažkas atsirado, nors ir netinkamo. Matoma, kad ten yra tai, ko mums reikia, bet jis susidėjo kaip eilutės, o ne skaičiai. Išspręskime problemą:

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; // pataisome } } console.log(sum); // viskas veikia

Ištaisykite klaidas, padarytas šiame 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);
Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti