Úps, rinne mé arís é: Debugging earráidí coitianta i JavaScript

Úps, rinne mé arís é: Debugging earráidí coitianta i JavaScript

D'fhéadfadh sé a bheith dúshlánach cód JavaScript a scríobh agus uaireanta imeagla a dhéanamh, mar a bhfuil go leor forbróirí eolach air. Sa phróiseas oibre, tá earráidí dosheachanta chun cinn, agus tá cuid acu arís agus arís eile go minic. Labhraíonn an t-alt seo, atá dírithe ar fhorbróirí novice, faoi na hearráidí seo agus conas iad a réiteach. Ar mhaithe le soiléireacht, baintear as ainmneacha feidhmeanna, airíonna agus réad amhrán coitianta. Cuidíonn sé seo go léir leat cuimhneamh go tapa ar conas botúin choitianta a cheartú.

Meabhraímid: do léitheoirí uile "Habr" - lascaine de 10 rúbal nuair a chláraíonn siad in aon chúrsa Scilbox ag baint úsáide as an gcód bolscaireachta "Habr".

Molann Skillbox: Cúrsa praiticiúil "Forbróir Soghluaiste OCP".

TypeError: ní shainítear an t-airí

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)

Caitheann an cód samplach thuas an earráid Cineál Neamhghafa Earráid: Ní féidir an t-airí 'ádh' de neamhshainithe a léamh. Is í an fhadhb atá ann ná nach bhfuil airí ainmnithe ag an réad cailín, cé go bhfuil airí ainm aige. Agus ós rud é nach bhfuil an mhaoin girl.named sainithe, ní féidir leat rochtain a fháil air, toisc go foirmiúil nach bhfuil sé ann. Ach má chuireann tú girl.name in ionad girl.named.lucky, ansin oibreoidh gach rud agus fillfidh an clár Lucky.

Is féidir leat níos mó a fhoghlaim faoi na hairíonna léigh anseo.

Bealaí chun TypeErrors a réiteach

Tarlaíonn Earráidí Cineál nuair a dhéanann ríomhchláraitheoir iarracht gníomhartha a dhéanamh ar shonraí nach dtagann le cineál sonrach. I measc na samplaí tá úsáid .bold(), lorg airí neamhshainithe, nó glaoch ar fheidhm nach feidhm í i ndáiríre.

Mar sin, má dhéanann tú iarracht cailín() a ghlaoch, gheobhaidh tú an earráid Cineál NeamhghabháltaEarráid: ní feidhm í yourVariable.bold agus ní feidhm í cailín, toisc gur réad a thugtar air i ndáiríre, ní feidhm.

D'fhonn deireadh a chur le hearráidí, ní mór duit staidéar a dhéanamh ar na hathróga. Mar sin, cad is cailín ann? Cad is cailín.named? Is féidir leat a fháil amach trí anailís a dhéanamh ar an gcód, ag taispeáint athróga ag baint úsáide as console.log, an t-ordú dífhabhtóra, nó ag glaoch ar an ainm athróg sa chonsól. Ní mór duit a chinntiú gur féidir oibriú ar an gcineál sonraí atá san athróg. Mura n-oireann sé, athraigh é, mar shampla, cuir coinníoll leis nó bain triail as.. blocáil - agus faigh smacht ar chur i gcrích na hoibríochta.

Stack Overflow

Má chreideann tú údair na liricí don amhrán Baby One More Time (tá sé seo Britney Spears, yeah), ansin ciallaíonn an focal buailte sa chomhthéacs seo fonn an amhránaí a bheith ar a dtugtar arís (seo míniú ar an comhthéacs an-an. amhrán - nóta aistritheora). Is féidir go dtiocfaidh méadú ar líon na nglaonna sa saol fíor mar thoradh ar an dúil seo. Ach i gclárú, is atarlú é seo a d'fhéadfadh earráid a chruthú má théann an chairn glaonna thar maoil.

Breathnaíonn na hearráidí mar seo:

Earráid: As spás cruachta (Imeall)
Earráid Inmheánach: an iomarca atarlaithe (Firefox)
Raon Earráid: Sáraíodh an t-uasmhéid cruachta glaonna (Chrome)

Tarlaíonn ró-shreabhadh cruachta mura measann an forbróir an bunchás san atarlú, nó mura dtugann an cód aghaidh ar an gcás atá beartaithe.

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

Sa chás seo, ní féidir stillBelieve a bheith bréagach, mar sin cuirfear oneMoreTime ar a dtugtar gach uair, ach ní chríochnóidh an fheidhm choíche.

Má thosaíonn tú ag brath ar bheirt chairde, laghdóidh sé seo uaigneas, agus ní bheidh ort fanacht ar ghlao.

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

Sampla is ea cásanna le lúba gan teorainn, nuair nach ngineann an córas teachtaireacht earráide, ach nuair a reo an leathanach ar a ndéantar an cód JavaScript. Tarlaíonn sé seo mura mbíonn coinníoll foirceanta ag an lúb fad.

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

Is féidir leat an fhadhb a réiteach mar seo a leanas:

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

Dífhabhtáil lúba gan teorainn agus cúlú

Má tá fadhb lúb gan teorainn agat, ní mór duit an cluaisín a dhúnadh i Chrome nó Edge, agus an fhuinneog brabhsálaí in Firefox a dhúnadh. Tar éis seo, ní mór duit an cód a anailísiú go cúramach. Mura bhfuil tú in ann an fhadhb a aimsiú, is fiú ordú dífhabhtóra a chur le do lúb nó feidhm agus luachanna na n-athróg a sheiceáil. Mura gcomhfhreagraíonn an toradh leis an méid a bhíothas ag súil leis, ansin cuirimid in ionad é, is féidir é seo a dhéanamh go héasca.

Sa sampla thuas, ba cheart dífhabhtóir a chur leis mar an gcéad líne den fheidhm nó den lúb. Ansin ní mór duit an cluaisín debug a oscailt i Chrome, ag déanamh anailíse ar na hathróga i raon feidhme. Ag baint úsáide as an gcéad chnaipe eile is féidir leat a gcuid athruithe a rianú le gach atriall. Tá sé seo go léir éasca a dhéanamh, agus i bhformhór na gcásanna faightear an fhadhb.

Is féidir leat tuilleadh a léamh faoi seo go léir anseo (le haghaidh chrome) agus anseo (le haghaidh Firefox).

Earráid chomhréire

Ceann de na hearráidí is coitianta i JavaScript ná SyntaxError. Cabhróidh síntí eagarthóir téacs leat iad a sheachaint. Mar shampla, marcálann Bracket Péire Colorizer lúibíní sa chód le dathanna éagsúla, agus déanann Prettier nó uirlis anailíse den chineál céanna gur féidir earráidí a aimsiú go tapa. Is é an rogha is fearr chun an dóchúlacht go dtarlódh Earráid Chomhréire a laghdú ná neadú íosta.

Comhroinn sna tuairimí: cad a dhéanann tú chun botúin a chosc nó iad a bhrath go tapa agus iad a dhíchur?

Molann Skillbox:

Foinse: will.com

Add a comment