
Shpesh, shkruajtja e kodit JavaScript është e vështirë dhe ndonjëherë madje frikësuese, një ndjesi e njohur për shumë programues. Gjatë procesit të punës, gabimet janë të pashmangshme dhe disa prej tyre ndodhin shpesh. Ky artikull, i dedikuar programuesve të rinj, diskuton këto gabime dhe mënyrat për t'i zgjidhur ato. Për qartësi, emrat e funksioneve, veçorive dhe objekteve janë marrë nga . Të gjitha këto ndihmojnë në mbajtjen mend shpejt se si të rregullohen gabimet e zakonshme.
KujtojmĂ«: pĂ«r tĂ« gjithĂ« lexuesit e "Habra" â zbritje prej 10,000 rublej pĂ«r regjistrimin nĂ« çdo kurs Skillbox me kodin promocional "Habr".
Skillbox rekomandon: Kurs praktik .
TypeError: pronë e pa përcaktuar
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)Shembulli i kodit tĂ« mĂ«sipĂ«rm jep gabimin Uncaught TypeError: Cannot read property âluckyâ of undefined. Problemi Ă«shtĂ« se objekti girl nuk ka atributin named, megjithĂ«se ka atributin name. Dhe pasi qĂ« atributi girl.named nuk Ă«shtĂ« i pĂ«rcaktuar, nuk Ă«shtĂ« e mundur tĂ« qasemi te ai, pasi formalisht ai nuk ekziston. Por nĂ«se e zĂ«vendĂ«soni girl.named.lucky me girl.name, atĂ«herĂ« gjithçka do tĂ« punojĂ« dhe programi do tĂ« kthejĂ« Lucky.
Më shumë rreth veçorive mund të .
Mënyrat për të eliminuar gabimet TypeError
Gabimet TypeError ndodhin kur programuesi përpiqet të kryejë veprime me të dhëna që nuk përputhen me një tip të caktuar. Një shembull mund të jetë përdorimi i .bold(), kërkesa për atributin undefined ose thirrja e një funksioni që në të vërtetë nuk është një funksion.
Pra, nëse përpiqeni të thërrisni girl (), do të shfaqet gabimi Uncaught TypeError: yourVariable.bold is not a function dhe girl is not a function, pasi në të vërtetë po thirret objekti, jo funksioni.
PĂ«r tĂ« eliminuar gabimet, Ă«shtĂ« e nevojshme tĂ« studiohen variablat. Pra, çfarĂ« Ă«shtĂ« girl? Dhe çfarĂ« Ă«shtĂ« girl.named? TĂ« gjitha kĂ«to mund tĂ« kuptohen duke analizuar kodin, duke shfaqur variablat me komandĂ«n console.log me ndihmĂ«n e komandĂ«s debugger ose duke thirrur emrin e variablit nĂ« konsolĂ«. Duhet tĂ« siguroheni qĂ« keni mundĂ«sinĂ« tĂ« operoni me tipin e tĂ« dhĂ«nave qĂ« pĂ«rmban variabla. NĂ«se ai nuk pĂ«rshtatet, ndryshojeni, pĂ«r shembull, shtoni njĂ« kusht ose bllokun try..catch â dhe merrni kontroll mbi realizimin e operacionit.
Teprimi i stack-ut
Nëse besojmë autorët e fjalëve të këngës Baby One More Time (kjo është Britney Spears, po), fjala hit në këtë kontekst nënkupton dëshirën e këngëtares që të telefonojë përsëri (këtu është shpjegimi i kontekstit të këngës, - shënimi i përkthyesit). Mund të ndodhë që kjo dëshirë të çojë në një rritje të numrit të telefonatave në jetë reale. Por në programim, është një rekursivitet, një mënyrë për të shkaktuar një gabim në rast të mbipirjes së stack-ut të thirrjeve.
Gabimet duken si më poshtë:
Gabim: Hapësira e stack-ut është e mbushur (Edge)
GabimBrendshëm: shumë rekursivitet (Firefox)
GabimRange: Madhësia maksimale e thirrjes së stack-ut u kalua (Chrome)
Mbipirja e stack-ut ndodh nëse zhvilluesi nuk ka marrë parasysh rastin bazë në rekursivitet ose nëse kodi nuk i referohet rastit të parashikuar.
function oneMoreTime(stillBelieve=true, loneliness=0) {
if (!stillBelieve && loneliness < 0) return
loneliness++
return oneMoreTime(stillBelieve, loneliness)
}Në këtë rast, stillBelieve kurrë nuk mund të marrë vlerën false, prandaj çdo herë do të ndodhi thirrja oneMoreTime, por ekzekutimi i funksionit nuk do të përfundojë.
Nëse filloni të shpresoni për dy miq, kjo do të zvogëlojë loneliness (vetmi), dhe mund të mos presim një telefonatë.
function oneMoreTime(stillBelieve=true, loneliness=0) {
if (!stillBelieve && loneliness < 0) return
loneliness--
stillBelieve = false
return oneMoreTime(stillBelieve, loneliness)
}Si një shembull mund të përmendim rastet me cikle të pafund, kur sistemi nuk lëshon një mesazh gabimi, por faqja ku ekzekutohet kodi JavaScript thjesht ngrin. Kjo ndodh nëse cikli while nuk ka një kusht për përfundimin.
let worldEnded = false
while (worldEnded !== true) {
console.log("Keep on dancin' till the world ends")
}Problemi mund të zgjidhet si më poshtë:
let worldEnded = false
while (worldEnded !== true) {
console.log("Keep on dancin' till the world ends")
worldEnded = true
}Depurimi i cikleve të pafund dhe rekursivitetit
Nëse ndodh një problem me një cikël të pafund, në Chrome ose Edge duhet të mbyllni skedarin, dhe në Firefox - dritaren e shfletuesit. Pas kësaj, duhet të analizoni me kujdes kodin. Nëse nuk keni arritur të gjeni problemin, është mirë të shtoni komandën debugger në cikël ose funksion dhe të kontrolloni vlerat e variablave. Nëse rezultati nuk korrespondon me atë që prisni, atëherë e zëvendësoni, kjo mund të bëhet lehtësisht.
Në shembullin që u përmend më lart, debugger duhet të shtohet si rreshti i parë i funksionit ose ciklit. Pastaj duhet të hapni skedën e debugging në Chrome, duke analizuar variablat në scope. Me butonin next mund të ndjekim ndryshimin e tyre në çdo iteracion. Të bësh gjithçka këtë është e thjeshtë dhe në shumicën e rasteve problemi gjenet.
Më shumë informacion rreth kësaj mund të lexoni këtu () dhe këtu ().
Gabim në sintaksë
Një nga gabimet më të zakonshme në JavaScript është SyntaxError. Të parandaloni ato mund të ndihmojnë shtesat e redaktorit të tekstit. Kështu, Bracket Pair Colorizer shënon kllapat në kod me ngjyra të ndryshme, ndërsa Prettier ose një mjet tjetër analize ofron mundësinë për të gjetur shpejt gabimet. Zgjedhja më e mirë, për të ulur mundësinë e shfaqjes së SyntaxError, është minimizimi i thellësisë.
Shpërndani në komentet: çfarë bëni për të shmangur gabimet ose për t'i zbuluar dhe hequr ato shpejt?
Skillbox rekomandon:
- Kurs praktik dyvjeçar .
- Kurs online .
- Kurs praktik njëvjeçar .
Burimi: habr.com
