জাভাস্ক্রিপ্টে লুপের উদাহরণ ব্যবহার করে কোড ডিবাগ করার টিপস
এখন আমি আপনাকে ত্রুটি খুঁজে বের করার পদ্ধতি শেখাব কোডে। কল্পনা করুন যে আপনি কোনও কারণে পূর্ববর্তী পাঠ থেকে পরামর্শ অনুসরণ করেননি এবং একটি অকাজের কোড পেয়েছেন। আসুন দেখি, কীভাবে ত্রুটি খুঁজে বের করতে হয় এবং এটি কাজ করাতে হয় কীভাবে।
অনেক新手 ভুল পদ্ধতি ব্যবহার করে খোঁজার। তারা কোড দেখে, এই আশায় যে তারা ত্রুটি লক্ষ্য করবে। এবং এভাবে কয়েক ঘন্টা কাটে। এটি এভাবে কাজ করে না।
সঠিক পদ্ধতি হল কনসোলে ভেরিয়েবল প্রিন্ট করা এবং সেখানে যা আছে তা প্রয়োজনীয় কি না তা নির্ধারণ করা। এতে শুরু করা উচিত সমস্যার সম্ভাব্য স্থান থেকে এবং উপরের দিকে যাওয়া কোড বরাবর। আসুন অনুশীলনে দেখি কীভাবে।
উদাহরণস্বরূপ, ধরা যাক আপনার সামনে ছিল দুই-অঙ্কের সংখ্যার একটি অ্যারে পুনরাবৃত্তি করার কাজ এবং সেই সংখ্যাগুলি খুঁজে বের করা যার প্রথম অঙ্কটি দ্বিতীয়টির চেয়ে এক বেশি। সরলতার জন্য, মনে করুন অ্যারেতে সংখ্যাগুলি স্ট্রিং হিসাবে সংরক্ষিত আছে।
ধরা যাক আপনি সমস্যার সমাধান করেছেন এবং পেয়েছেন নিম্নলিখিত কোড:
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 দেয়। এই
ক্ষেত্রে, প্রথমে এটি পরীক্ষা করা প্রয়োজন,
কোডের এক্সিকিউশন if-এর ভিতরে
পড়ে কিনা। সেখানে কনসোলে কিছু প্রিন্ট করি:
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);
ফলস্বরূপ, এটি immediately দৃশ্যমান হয়ে যায় যে দ্বিতীয় অংশটি দুই-অঙ্কের। বুঝতে অসুবিধা হয় না যে এটি এর কারণ যে একটি স্ট্রিং হিসাবে যোগ হয়। সমস্যাটি ঠিক করি:
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 ভেরিয়েবলে কিছু উপস্থিত হয়েছে,
যদিও সেটি incorrect. যাইহোক, এটি দেখা যাচ্ছে
যে সেখানে আমাদের প্রয়োজনীয় জিনিসটি রয়েছে,
কিন্তু এটি স্ট্রিং হিসাবে যোগ হয়েছে,
সংখ্যা হিসাবে নয়। সমস্যাটি ঠিক করি:
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);