O, ndidachitanso: Kuthetsa zolakwika zomwe wamba mu JavaScript

O, ndidachitanso: Kuthetsa zolakwika zomwe wamba mu JavaScript

Kulemba khodi ya JavaScript kungakhale kovuta ndipo nthawi zina kumakhala kochititsa mantha, monga momwe opanga ambiri amazidziwa. Pogwira ntchito, zolakwika zimachitika mosalephera, ndipo zina zimabwerezedwa mobwerezabwereza. Nkhaniyi, yoyang'ana oyambitsa novice, ikukamba za zolakwika izi ndi momwe angawathetsere. Kuti zimveke bwino, mayina a ntchito, katundu ndi zinthu amatengedwa nyimbo yotchuka. Zonsezi zimakuthandizani kukumbukira mwamsanga momwe mungakonzere zolakwika wamba.

Tikukukumbutsani: kwa owerenga onse a Habr - kuchotsera ma ruble 10 polembetsa maphunziro aliwonse a Skillbox pogwiritsa ntchito nambala yotsatsira ya Habr.

Skillbox imalimbikitsa: Njira yothandiza "Mobile Developer PRO".

TypeError: katundu sanafotokozedwe

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)

Nambala yachitsanzo yomwe ili pamwambapa iponya cholakwika Uncaught TypeError: Sitingathe kuwerenga katundu 'mwayi' wosadziwika. Vuto ndiloti mtsikanayo alibe malo otchulidwa, ngakhale ali ndi dzina. Ndipo popeza katundu wa girl.named sanafotokozedwe, simungathe kuzipeza, chifukwa kulibeko. Koma ngati mutalowa m'malo girl.named.lucky ndi girl.name, ndiye kuti zonse zigwira ntchito ndipo pulogalamuyo ibwereranso Lucky.

Mukhoza kuphunzira zambiri za katundu werengani apa.

Momwe mungathetsere TypeErrors

TypeErrors zimachitika pamene wopanga mapulogalamu amayesa kuchita zinthu zomwe sizikugwirizana ndi mtundu wina. Zitsanzo zikuphatikizapo kugwiritsa ntchito .bold(), kupempha chinthu chosadziwika, kapena kuyitana ntchito yomwe siili ntchito.

Chifukwa chake, ngati muyesa kuyimbira mtsikana (), mupeza cholakwika Chosagwidwa ndi TypeError: yourVariable.bold si ntchito ndipo mtsikana si ntchito, chifukwa kwenikweni ndi chinthu chomwe chikutchedwa, osati ntchito.

Kuti muchepetse zolakwika, muyenera kuphunzira zosintha. Ndiye, mtsikana ndi chiyani? Kodi girl.named ndi chiyani? Mutha kuzipeza posanthula kachidindo, kuwonetsa zosintha pogwiritsa ntchito console.log, debugger command, kapena kutchula dzina losinthika mu console. Muyenera kuwonetsetsa kuti ndizotheka kugwiritsa ntchito mtundu wa data womwe uli muzosintha. Ngati sichikukwanira, sinthani, mwachitsanzo, onjezani chikhalidwe kapena yesani..catch block - ndikupeza mphamvu pakuchita ntchitoyo.

Stack Kusefukira

Ngati mumakhulupirira kuti ndi omwe adalemba nyimbo ya Baby One More Time (uyu ndi Britney Spears, eya), ndiye kuti mawu akuti kugunda munkhaniyi amatanthauza chikhumbo cha woyimbayo kuti aitanidwenso (pali kufotokozera kwa nkhani yomweyi. nyimbo - cholembera cha womasulira). Zitha kukhala kuti chikhumbo ichi chidzatsogolera ku kuchuluka kwa mafoni m'moyo weniweni. Koma pamapulogalamu, uku ndikubwereza komwe kungayambitse cholakwika ngati mulu woyimba foni utasefukira.

Zolakwazo zikuwoneka motere:

Zolakwika: Patha danga (M'mphepete)
Zolakwika Zamkati: kubwereza kwambiri (Firefox)
RangeError: Kuchuluka kwa kuchuluka kwa kuyimba foni kupyola (Chrome)

Kusefukira kwa stack kumachitika ngati wopangayo saganiziranso zomwe zachitika pakubweza, kapena ngati codeyo siyikugwirizana ndi zomwe akufuna.

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

Pankhaniyi, stillBelieve singakhale zabodza, kotero OneMoreTime imatchedwa nthawi iliyonse, koma ntchitoyi sidzatha.

Ngati mutayamba kudalira abwenzi awiri, izi zidzachepetsa kusungulumwa, ndipo simuyenera kuyembekezera kuyitana.

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

Chitsanzo ndi milandu yokhala ndi malupu opanda malire, pomwe makinawo satulutsa uthenga wolakwika, koma tsamba lomwe JavaScript code imayikidwa imangozizira. Izi zimachitika ngati nthawi ya loop ilibe vuto lotha.

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

Mutha kuthetsa vutoli motere:

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

Kuthetsa malupu opanda malire ndi kubwerezabwereza

Ngati muli ndi vuto lopanda malire, muyenera kutseka tabu mu Chrome kapena Edge, ndikutseka zenera la msakatuli mu Firefox. Pambuyo pake, muyenera kusanthula mosamala kachidindo. Ngati simukupeza vuto, ndikofunikira kuwonjezera lamulo la debugger ku loop kapena ntchito yanu ndikuwunika zomwe zimasintha. Ngati zotsatira zake sizikugwirizana ndi zomwe zinkayembekezeredwa, ndiye kuti timasintha, izi zikhoza kuchitika mosavuta.

Muchitsanzo pamwambapa, debugger iyenera kuwonjezeredwa ngati mzere woyamba wa ntchito kapena lupu. Kenako muyenera kutsegula tabu ya debug mu Chrome, ndikusanthula zosinthika zomwe zikuchitika. Pogwiritsa ntchito batani lotsatira mutha kutsata zosintha zawo nthawi iliyonse. Zonsezi ndi zosavuta kuchita, ndipo nthawi zambiri vuto limapezeka.

Mutha kuwerenga zambiri za izi zonse apa (za Chrome) ndi apa (kwa Firefox).

Vuto la syntax

Chimodzi mwa zolakwika zofala kwambiri mu JavaScript ndi SyntaxError. Zowonjezera zolemba zolemba zikuthandizani kuzipewa. Mwachitsanzo, Bracket Pair Colorizer imayika mabulaketi mu code yokhala ndi mitundu yosiyanasiyana, ndipo Prettier kapena chida chowunikira chofananira chimapangitsa kuti athe kupeza zolakwika mwachangu. Njira yabwino kwambiri yochepetsera mwayi wa SyntaxError ndikuyika zisa.

Gawani nawo ndemanga: mumatani kuti mupewe zolakwika kapena kuzizindikira ndikuzichotsa mwachangu?

Skillbox imalimbikitsa:

Source: www.habr.com

Kuwonjezera ndemanga