პროგრამირების საფუძვლები › დამწყები › შეცდომების პოვნა
console.log, როგორც ფანარი
ეს თავი CodeQuest Pro-ს ნაწილია
Pro ხსნის სკოლის ყველა კურსს და თამაშის ყველა ლეველს, ვიდეოს და პროექტს. ერთჯერადი გადახდა, გამოწერის გარეშე.
რას ისწავლი
- როგორ გაიგო, რა ხდება პროგრამის შიგნით,
console.log-ით - რა დაბეჭდო: მნიშვნელობა, წარწერა და ტიპი
- როგორ შეავიწროვო ძებნის არე, სანამ შეცდომას არ იპოვი
ბნელ ოთახში
ლოგიკური შეცდომა ბნელ ოთახში დაკარგულ საგანს ჰგავს: იცი, რომ სადღაც არის, მაგრამ ვერ ხედავ. console.log ფანარია. მას პროგრამის სხვადასხვა ადგილას ჩასვამ და ნახავ, როგორი იყო ცვლადები იმ მომენტში. სადაც მნიშვნელობა პირველად გახდა არასწორი, შეცდომაც იქ არის.
ეს ხერხი იმდენად მარტივი და ეფექტურია, რომ გამოცდილი პროგრამისტებიც ყოველდღე იყენებენ.
წარწერა ყოველ ბეჭდვას
შიშველი რიცხვები ეკრანზე მალე აირევა: რომელი რას ნიშნავს? ყოველთვის დაურთე წარწერა:
let price = 12;
let count = 3;
console.log("price:", price, "count:", count);
console.log("ნამრავლი:", price * count);ტიპის შემოწმება
ზოგჯერ მნიშვნელობა სწორად ჩანს, მაგრამ სხვა ტიპისაა. "10" და 10 ეკრანზე ერთნაირია. ასეთ დროს typeof დაგეხმარება:
let scores = ["80", "90", "100"];
let sum = 0;
for (const s of scores) {
sum += s;
console.log("s:", s, typeof s, "sum:", sum);
}გაშვებისას ნახავ, რომ sum იქცევა "080"-ად, მერე "08090"-ად: ქულები ტექსტია და + მათ აერთებს. typeof s ამას მაშინვე გამხელს: string. შეცდომის ადგილი ნაპოვნია, გასწორება კი იცი: sum += Number(s).
ბეჭდვა ციკლის შიგნით
ციკლში ჩასმული console.log ყოველ იტერაციაზე იბეჭდება, ასე რომ ხედავ, როგორ იცვლება ცვლადები ნაბიჯ-ნაბიჯ. ციკლებში შეცდომის ძებნის საუკეთესო ხერხია. ოღონდ ფრთხილად: თუ ციკლი 10 000-ჯერ ბრუნავს, 10 000 ხაზს მიიღებ. ასეთ დროს დროებით შეამცირე მონაცემები, ან ბეჭდე მხოლოდ საეჭვო შემთხვევაში: if (i > 95) console.log(...).
არის შევიწროება
თუ არ იცი, სად არის შეცდომა, ჩასვი console.log პროგრამის შუაში. თუ იქ მნიშვნელობები სწორია, შეცდომა მეორე ნახევარშია. თუ არასწორია, პირველში. მერე იმ ნახევრის შუაში ჩასვი. ყოველი ნაბიჯი საძიებო არეს ორჯერ ამცირებს და რამდენიმე ნაბიჯში ზუსტ ხაზამდე მიხვალ.
ხაზის დროებით „გამოსართავად“ წაშლა არ გჭირდება: მის წინ // დაწერე და ის კომენტარად იქცევა. ასე ამოწმებ, რომელი ნაწილი იწვევს პრობლემას.
მოწესრიგება
როცა შეცდომა იპოვე და გაასწორე, დებაგინგისთვის ჩასმული console.log-ები წაშალე. ისინი პროგრამის შედეგს ანაგვიანებს და სხვისთვის, ან ერთ კვირაში შენთვის, გაუგებარი იქნება.
სცადე თავად
ეს ფუნქცია სიაში დადებით რიცხვებს უნდა ითვლიდეს და 3-ს უნდა აბრუნებდეს, მაგრამ 4-ს აბრუნებს. ჩასვი console.log ციკლის შიგნით, ნახე, რომელი რიცხვი ითვლება ზედმეტად, და გაასწორე.
ხშირი შეცდომები
- ბეჭდვა წარწერის გარეშე. რამდენიმე უწარწერო რიცხვი ეკრანზე ერთმანეთში ირევა.
- ბეჭდვა არასწორ ადგილას.
return-ის შემდეგ ჩასმულიconsole.logარასოდეს შესრულდება. ბეჭდვა იქ ჩასვი, სადაც კოდი ნამდვილად გადის. - დავიწყებული დებაგ-ბეჭდვები. გასწორების შემდეგ წაშალე ისინი.
სავარჯიშო
ეს კოდი სამი ქულის საშუალოს ითვლის და საშუალო: 90 უნდა დაბეჭდოს, მაგრამ უცნაურ რიცხვს ბეჭდავს. ჩასვი ციკლში console.log ტიპით, იპოვე მიზეზი და გაასწორე.
💡 მინიშნება
console.log(typeof s) აჩვენებს, რომ ქულები ტექსტია. დამატებამდე გადააქციე: Number(s).
✅ ამოხსნის ნახვა
let scores = ["80", "90", "100"];
let sum = 0;
for (const s of scores) {
sum += Number(s);
}
console.log("საშუალო:", sum / scores.length);მინი-ქვიზი
1რატომ უნდა დაურთო წარწერა ყოველ დებაგ-ბეჭდვას?
რამდენიმე უწარწერო რიცხვი ადვილად ირევა.
2sum გახდა "08090". რას დაბეჭდავს typeof ქულებზე?
+ ტექსტებს აერთებს, ამიტომ ქულები ტექსტია.
3რა არის „არის შევიწროება“?
სწორი მნიშვნელობა შუაში ნიშნავს, რომ შეცდომა მეორე ნახევარშია.
შეჯამება
console.logფანარია: ხედავ ცვლადების მნიშვნელობას კონკრეტულ მომენტში.- ბეჭდე წარწერით, საჭიროებისას
typeof-ით. - ციკლში ბეჭდვა ყოველ იტერაციას გაჩვენებს.
- ჩასვი ბეჭდვა შუაში და შეავიწროვე არე. გასწორების შემდეგ დებაგ-ბეჭდვები წაშალე.