जावास्क्रिप्ट में लूप्स के उदाहरण के साथ कोड डिबगिंग युक्तियाँ
अब मैं आपको कोड में त्रुटियाँ खोजने की विधि सिखाऊंगा। कल्पना कीजिए कि किसी गलतफहमी के कारण आपने पिछले पाठ की सलाह का पालन नहीं किया और आपको एक काम न करने वाला कोड मिला। आइए देखें कि त्रुटियाँ कैसे खोजें और इसे काम करने के लिए कैसे प्राप्त करें।
कई शुरुआती लोग खोज की गलत विधि का उपयोग करते हैं। वे कोड को लेते हैं और देखते हैं, उम्मीद में कि उन्हें त्रुटि दिखाई देगी। और ऐसा कुछ घंटों तक चलता रहता है। यह इस तरह काम नहीं करता है।
सही विधि कंसोल में चरों को आउटपुट करना और यह निर्धारित करना है कि वहां वह सही चीज है जिसकी आवश्यकता है, या नहीं। इस मामले में, आपको अनुमानित समस्या स्थान से शुरुआत करनी चाहिए और कोड के ऊपर की ओर बढ़ना चाहिए। आइए व्यवहार में देखें ।
उदाहरण के लिए, मान लीजिए कि आपके सामने दो-अंकीय संख्याओं वाली एक सरणी को पार करने और उन संख्याओं को खोजने का कार्य था जिनमें पहला अंक दूसरे से एक अधिक है। सादगी के लिए, मान लें कि सरणी में संख्याएँ स्ट्रिंग्स के रूप में संग्रहीत हैं।
मान लीजिए कि आपने समस्या का समाधान कर लिया और आपको निम्नलिखित कोड मिला:
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);
परिणामस्वरूप, यह तुरंत दिखाई देता है कि दूसरा योगदान दो-अंकीय है। यह समझना आसान है कि ऐसा इसलिए है क्योंकि इकाई को एक स्ट्रिंग के रूप में जोड़ा जा रहा है। आइए समस्या को ठीक करें:
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);