⊗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ščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць