⊗jsPmLpDbg 167 of 505 menu

Савети за отклањање грешака у коду на примеру петљи у JavaScript-у

Сада ћу вас научити методи тражења грешака у коду. Замислимо да сте из неког разлога нисте следили савете из претходне лекције и добили код који не ради. Хајде да погледамо како да пронађете грешке и приморате га да ради.

Многи почетници користе погрешну методу претраге. Они узму и гледају у код, у нади да ће приметити грешку. И то пар сати. То не функционише на тај начин.

Правилна метода је испис променљивих у конзолу и утврђивање, да ли се тамо налази оно што треба, или не. При томе треба почети од претпостављеног места проблема и кретати се навише по коду. Погледајмо у пракси.

Нека за пример пред вама стоји задатак да се пређе преко низа са двоцифреним бројевима и пронађу бројеви, код којих је прва цифра за један већа од друге. Нека за једноставност у низу буду сачувани бројеви у виду стрингова.

Нека сте решили задатак и добили следећи код:

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); // исписује 0

Код, међутим, исписује 0. У овом случају прво треба проверити, гледамо ли шта у променљивој улази ли извршење кода у иф. Испишимо у њему нешто у конзолу:

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('!'); // ништа не исписује sum += elem; } } console.log(sum);

Пошто се ништа није појавило у конзоли, то значи да извршење кода једноставно не улази у услов. Погледајмо својим очима, шта поредимо:

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

Као резултат одмах постаје видљиво, да је други сабирак двоцифрен. Лако се схвата да је то због тога, што се једанца додаје као стринг. Исправимо проблем:

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); // '021324354'

Након исправке већ видимо да у променљивој sum нешто има, иако и некорректно. Види се, међутим, да се тамо налази оно што нам треба, али се сложило у виду стрингова, а не бројева. Исправимо проблем:

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); // све ради

Исправите грешке, учињене у следећем коду:

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);
Српски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј