⊗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हिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել