डिबगिंग
डिबगिंग का मतलब है पता लगाना कि प्रोग्राम गलत काम क्यों करता है। इस पेज पर एक ऑर्डर है, { drink: "tea", size: "regular" }, और एक गलत प्रॉपर्टी नाम। bug order.cup पढ़ता है। टूटा लॉग tea / undefined है। सुधार के बाद पेज की पंक्ति fixed / tea / regular होती है।
यह क्लास का पाठ नहीं है
पिछले पेज ने Drink और SpecialDrink बनाए। उसकी पंक्ति tea / regular / mint थी। वहाँ कुछ जान-बूझकर टूटा नहीं था।
यहाँ डेटा पहले से सही है। bug order.cup पढ़ता है, जबकि ऑब्जेक्ट में size है, cup नहीं। असली प्रॉपर्टी size है।
फ़ंक्शन दोबारा लिखने से पहले मान पढ़ो
console.log एक मान छापता है और स्क्रिप्ट को नहीं रोकता। console.warn चेतावनी चिह्नित करता है। console.error असफलता चिह्नित करता है। इनमें से कोई डेटा ठीक नहीं करता। वे सिर्फ़ गलत मान को दिखने देते हैं।
प्रॉपर्टी का नाम गलत है
label order.drink और order.cup को जोड़ता है। drink मौजूद है, इसलिए पहला शब्द tea है। cup मौजूद नहीं, इसलिए दूसरा शब्द undefined है।
const order = { drink: "tea", size: "regular" };
function label(order) {
return order.drink + " / " + order.cup;
}
console.log(label(order));
लॉग tea / undefined है। ऑब्जेक्ट में अब भी size है। फ़ंक्शन ने उसे कभी नहीं पढ़ा।
असफलता चिह्नित करो
जब size न हो, console.error("missing size") बुलाओ। यह टुकड़ा बिना आकार वाला ऑर्डर देता है ताकि त्रुटि वाला रास्ता चले। console.error("missing size") थ्रो नहीं करता।
function label(order) {
if (!order.size) {
console.error("missing size");
return order.drink + " / missing size";
}
return order.drink + " / " + order.size;
}
console.log(label({ drink: "tea" }));
कंसोल त्रुटि missing size दिखाता है, और लौटाया पाठ tea / missing size है। बिना size वाला खाली ऑर्डर tea / missing size लौटाता है। खाली स्ट्रिंग भी गायब मानी जाती है क्योंकि !"" सच है।
जान-बूझकर रोक
debugger कथन ब्राउज़र से कहता है कि केवल तभी रुके जब डेवलपर टूल खुले हों। टूल बंद हों तो कथन कुछ नहीं करता और अगली पंक्ति चलती रहती है।
const order = { drink: "tea", size: "regular" };
debugger;
console.log(order.size);
टूल खुले हों तो निष्पादन debugger पर रुकता है और तुम order देख सकते हो। टूल बंद हों तो अगला लॉग regular है। debugger त्रुटि नहीं है और order नहीं बदलता।
कॉल सूची
अगर label format को बुलाए और format थ्रो करे, तो कंसोल दोनों नाम सूचीबद्ध करता है। सूची के ऊपर से शुरू करो: वही असफल पंक्ति है। फिर कॉल करने वाले पर लौटो। इस पेज का bug कुछ थ्रो नहीं करता। undefined एक मान है, इसलिए जब तक तुम लॉग न करो सूची शांत रहती है।
एक नाम बदलो
order.cup को order.size से बदलो। undefined चुप कराने के लिए cup प्रॉपर्टी मत जोड़ो। ऑब्जेक्ट पहले से सही था। असली प्रॉपर्टी size है।
सुधार के बाद की पंक्ति
पेज size पढ़ता है, उसकी जाँच करता है, और लेबल से पहले एक छोटा स्टेटस लिखता है।
<!DOCTYPE html>
<html>
<body>
<p id="line">…</p>
<script>
const order = { drink: "tea", size: "regular" };
function label(order) {
if (!order.size) {
console.error("missing size");
return order.drink + " / missing size";
}
return order.drink + " / " + order.size;
}
document.getElementById("line").textContent = "fixed / " + label(order);
</script>
</body>
</html>
पंक्ति fixed / tea / regular पढ़ती है। शब्द fixed केवल स्टेटस है। पेय और आकार ऑब्जेक्ट से आते हैं। tea / undefined टूटे फ़ंक्शन का परिणाम था।
काउंटर पर
- जब
label(order)order.cupपढ़े, उसे लॉग करो। लॉग tea / undefined है। { drink: "tea" }पास करो और त्रुटि पढ़ो। लौटा पाठ tea / missing size है।- स्क्रिप्ट में
debuggerछोड़ो। टूल बंद हों तो अगला लॉग अब भी regular है। - पेज की पंक्ति पढ़ो: fixed / tea / regular.
आम गलतियाँ
- लॉग undefined कहे इसलिए ऑब्जेक्ट बदलना
console.logको पॉज़ मानना;console.logस्क्रिप्ट नहीं रोकता- डेवलपर टूल बंद होने पर
debuggerसे पेज रुकने की उम्मीद - क्लास पेज से
tea / regular / mintपढ़ना console.error("missing size")बुलाकर सोचना कि वह थ्रो करता है
यह याद रखो
console.logमान दिखाता है और स्क्रिप्ट जारी रहती है- टूटा पढ़ना
order.cupहै; असली प्रॉपर्टीsizeहै console.error("missing size")असफलता चिह्नित करता है और थ्रो नहीं करताdebuggerकेवल तभी रुकता है जब डेवलपर टूल खुले हों- पेज की पंक्ति fixed / tea / regular पढ़ती है
🧠 अपने ज्ञान की परीक्षा करें
अपने ज्ञान की परीक्षा करें
इस इंटरैक्टिव क्विज़ के साथ अपनी चुनौती लें और देखें कि आप विषय को कितनी अच्छी तरह समझते हैं
📝 निर्देश
- हर प्रश्न को ध्यान से पढ़ें
- हर प्रश्न के लिए सबसे अच्छा उत्तर चुनें
- आप जितनी बार चाहें क्विज़ दोबारा दे सकते हैं
- आपकी प्रगति शीर्ष पर दिखाई जाएगी