اڙي، مون اهو ٻيهر ڪيو: جاوا اسڪرپٽ ۾ عام غلطين کي ڊيبگ ڪرڻ

اڙي، مون اهو ٻيهر ڪيو: جاوا اسڪرپٽ ۾ عام غلطين کي ڊيبگ ڪرڻ

جاوا اسڪرپٽ ڪوڊ لکڻ مشڪل ٿي سگهي ٿو ۽ ڪڏهن ڪڏهن سڌي طرح خوفزده ٿي سگهي ٿو، جيئن ڪيترائي ڊولپر واقف آهن. ڪم جي عمل ۾، غلطيون ناگزير طور تي پيدا ٿينديون آهن، ۽ انهن مان ڪجهه بار بار بار بار آهن. هي آرٽيڪل، نوان ڊولپرز جو مقصد، انهن غلطين بابت ڳالهائيندو آهي ۽ انهن کي ڪيئن حل ڪجي. وضاحت لاءِ، ڪمن، ملڪيتن ۽ شين جا نالا ورتا ويا آهن مشهور گيت. هي سڀ توهان کي جلدي ياد ڪرڻ ۾ مدد ڪري ٿي ته عام غلطين کي ڪيئن درست ڪجي.

اسان توهان کي ياد ڏياريون ٿا: "Habr" جي سڀني پڙهندڙن لاءِ - 10 روبل جي رعايت جڏهن "Habr" پروموشنل ڪوڊ استعمال ڪندي ڪنهن به اسڪل باڪس ڪورس ۾ داخلا.

Skillbox سفارش ڪري ٿو: عملي ڪورس "موبائل ڊولپر پرو".

TypeError: ملڪيت جي وضاحت نه ڪئي وئي آهي

let girl = {
    name: "Lucky",
    location: "Hollywood",
    profession: "star",
    thingsMissingInHerLife: true,
    lovely: true,
    cry: function() {
        return "cry, cry, cries in her lonely heart"
    }
}
console.log(girl.named.lucky)

مٿي ڏنل مثال جو ڪوڊ اُڇلائي ٿو غلطي Uncaught TypeError: Undefined جي پراپرٽي ’لڪي‘ کي پڙهي نٿو سگھجي. مسئلو اِهو آهي ته ڇوڪريءَ جي اعتراض جي نالي واري ملڪيت نه آهي، جيتوڻيڪ اُن وٽ نالي جي ملڪيت آهي. ۽ جيئن ته ڇوڪري جي نالي واري ملڪيت جي وضاحت نه ڪئي وئي آهي، توهان ان تائين رسائي نٿا ڪري سگهو، ڇاڪاڻ ته اهو رسمي طور تي موجود ناهي. پر جيڪڏهن توهان girl.named.lucky کي girl.name سان تبديل ڪيو، ته پوءِ سڀ ڪجهه ڪم ڪندو ۽ پروگرام لڪي واپس ايندو.

توھان حاصل ڪري سگھو ٿا وڌيڪ ملڪيت بابت هتي پڙهو.

TypeErrors کي ڪيئن حل ڪجي

TypeErrors تڏهن ٿينديون آهن جڏهن هڪ پروگرامر ان ڊيٽا تي عمل ڪرڻ جي ڪوشش ڪندو آهي جيڪي ڪنهن مخصوص قسم سان نه هجن. مثالن ۾ شامل آهي استعمال ڪرڻ .bold()، اڻ ڄاڻايل ملڪيت لاءِ پڇڻ، يا ڪنهن فنڪشن کي سڏڻ جيڪو اصل ۾ ڪو فنڪشن ناهي.

تنهن ڪري، جيڪڏهن توهان گرل() کي ڪال ڪرڻ جي ڪوشش ڪندا، توهان کي غلطي ملي ويندي Uncaught TypeError: yourVariable.bold هڪ فنڪشن ناهي ۽ ڇوڪري هڪ فنڪشن ناهي، ڇاڪاڻ ته اهو اصل ۾ هڪ اعتراض آهي جنهن کي سڏيو وڃي ٿو، نه هڪ فنڪشن.

غلطين کي ختم ڪرڻ لاء، توهان کي متغير پڙهڻ جي ضرورت آهي. پوء، هڪ ڇوڪري ڇا آهي؟ ڇوڪري جو نالو ڇا آهي؟ توھان ڳولي سگھوٿا ڪوڊ جو تجزيو ڪندي، console.log استعمال ڪندي متغير ڏيکاريندي، ڊيبگر ڪمانڊ، يا ڪنسول ۾ متغير جو نالو سڏيندي. توهان کي پڪ ڪرڻ جي ضرورت آهي ته متغير ۾ موجود ڊيٽا جي قسم تي هلائڻ ممڪن آهي. جيڪڏهن اهو مناسب نه آهي، ان کي تبديل ڪريو، مثال طور، شرط شامل ڪريو يا ڪوشش ڪريو.. پڪڙي بلاڪ - ۽ آپريشن جي عمل تي ڪنٽرول حاصل ڪريو.

اسٽيڪ اوور فلو

جيڪڏهن توهان گيت جي ليکڪن تي يقين رکون ٿا ته گيت بيبي ون مور ٽائيم (هي آهي برٽني اسپيئرز، ها)، ته پوء ان حوالي سان هٽ لفظ جو مطلب آهي ڳائڻي جي خواهش کي ٻيهر سڏيو وڃي (هتي هڪ وضاحت آهي ان جي حوالي سان. گيت - مترجم جو نوٽ). اهو ٿي سگهي ٿو ته اها خواهش حقيقي زندگي ۾ ڪالن جي تعداد ۾ اضافو ٿي سگهي ٿي. پر پروگرامنگ ۾، هي هڪ ورهاڱي آهي جيڪو هڪ غلطي پيدا ڪري سگهي ٿو جيڪڏهن ڪال اسٽيڪ اوور فلو ٿي وڃي.

غلطيون هن طرح نظر اچن ٿيون:

غلطي: اسٽيڪ اسپيس کان ٻاهر (Edge)
اندروني غلطي: تمام گهڻو ورجائي (فائر فاڪس)
RangeError: وڌ ۾ وڌ ڪال اسٽيڪ سائيز وڌي وئي (Chrome)

هڪ اسٽيڪ اوور فلو ٿئي ٿي جيڪڏهن ڊولپر بيس ڪيس تي غور نه ڪندو آهي ريٽرن ۾، يا جيڪڏهن ڪوڊ گهربل ڪيس کي پتو نه ٿو ڏئي.

function oneMoreTime(stillBelieve=true, loneliness=0) {
    if (!stillBelieve && loneliness < 0) return
    loneliness++
    return oneMoreTime(stillBelieve, loneliness)
}

انهي حالت ۾، stillBelieve ڪڏهن به غلط نه ٿي سگهي، تنهنڪري هر وقت OneMoreTime سڏيو ويندو، پر فنڪشن ڪڏهن به مڪمل نه ٿيندو.

جيڪڏهن توهان ٻن دوستن تي ڀروسو ڪرڻ شروع ڪيو، اهو اڪيلائي کي گهٽائيندو، ۽ توهان کي ڪال جو انتظار نه ڪرڻو پوندو.

function oneMoreTime(stillBelieve=true, loneliness=0) {
    if (!stillBelieve && loneliness < 0) return
    loneliness--
    stillBelieve = false
    return oneMoreTime(stillBelieve, loneliness)
}

هڪ مثال لامحدود لوپس سان ڪيس آهن، جڏهن سسٽم هڪ غلطي پيغام پيدا نه ڪندو آهي، پر اهو صفحو جنهن تي جاوا اسڪرپٽ ڪوڊ تي عمل ڪيو ويندو آهي صرف منجمد ٿي ويندو آهي. اهو ٿئي ٿو جڏهن لوپ کي ختم ٿيڻ واري حالت نه آهي.

let worldEnded = false
 
while (worldEnded !== true) {
  console.log("Keep on dancin' till the world ends")
}

توھان ھيٺ ڏنل مسئلو حل ڪري سگھو ٿا:

let worldEnded = false
 
while (worldEnded !== true) {
  console.log("Keep on dancin' till the world ends")
  worldEnded = true
}

لامحدود لوپس ۽ ريٽرن کي ڊيبگ ڪرڻ

جيڪڏهن توهان وٽ لامحدود لوپ جو مسئلو آهي، توهان کي Chrome يا ايج ۾ ٽيب کي بند ڪرڻ جي ضرورت آهي، ۽ فائر فاکس ۾ برائوزر ونڊو بند ڪرڻ جي ضرورت آهي. هن کان پوء، توهان کي احتياط سان ڪوڊ تجزيو ڪرڻ جي ضرورت آهي. جيڪڏهن توهان مسئلو نه ڳولي سگهو ٿا، اهو توهان جي لوپ يا فنڪشن ۾ ڊيبگر ڪمانڊ شامل ڪرڻ ۽ متغير جي قيمتن جي جانچ ڪرڻ جي قابل آهي. جيڪڏهن نتيجو اهو ناهي ته جيڪو توقع ڪئي وئي هئي، پوء اسان ان کي تبديل ڪريون ٿا، اهو آساني سان ٿي سگهي ٿو.

مٿين مثال ۾، ڊيبگر کي فنڪشن يا لوپ جي پهرين لائن طور شامل ڪيو وڃي. پوءِ توھان کي کولڻ جي ضرورت آھي ڊيبگ ٽيب ڪروم ۾، دائري ۾ متغيرن جو تجزيو ڪندي. ايندڙ بٽڻ کي استعمال ڪندي توھان انھن جي تبديلين کي ٽريڪ ڪري سگھوٿا ھر ھڪڙي ورجائي سان. اهو سڀ ڪجهه ڪرڻ آسان آهي، ۽ اڪثر ڪيسن ۾ اهو مسئلو مليو آهي.

توھان ھن بابت وڌيڪ پڙھي سگھوٿا هتي (ڪروم لاءِ) ۽ هتي (فائر فاکس لاءِ).

نحوي غلطي

JavaScript ۾ سڀ کان وڌيڪ عام غلطين مان هڪ آهي SyntaxError. ٽيڪسٽ ايڊيٽر جي توسيع توهان کي انهن کان بچڻ ۾ مدد ڪندي. مثال طور، Bracket Pair Colorizer مختلف رنگن سان ڪوڊ ۾ بریکٹس کي نشانو بڻائيندو آهي، ۽ Prettier يا هڪ جهڙو تجزياتي اوزار ان کي ممڪن بڻائي ٿو جلدي غلطيون ڳولڻ. SyntaxError جي امڪان کي گھٽائڻ لاءِ بھترين اختيار آھي گھٽ ۾ گھٽ نسٽنگ.

تبصرن ۾ حصيداري ڪريو: توهان غلطين کي روڪڻ يا جلدي ڳولڻ ۽ ختم ڪرڻ لاء ڇا ڪندا آهيو؟

Skillbox سفارش ڪري ٿو:

جو ذريعو: www.habr.com

تبصرو شامل ڪريو