Oo, ndakazviita zvakare: Kugadzirisa zvikanganiso zvakajairika muJavaScript

Oo, ndakazviita zvakare: Kugadzirisa zvikanganiso zvakajairika muJavaScript

Kunyora JavaScript kodhi kunogona kuve kwakaoma uye dzimwe nguva kutyisa zvakanyanya, sekuzivikanwa kwavazhinji vanogadzira. Mukuita basa, zvikanganiso zvinomuka zvisingadzivisiki, uye zvimwe zvacho zvinodzokororwa kakawanda. Ichi chinyorwa, chakanangana nevagadziri vekutanga, chinotaura pamusoro pezvikanganiso izvi uye nzira yekuzvigadzirisa. Kujekesa, mazita emabasa, zvivakwa uye zvinhu zvinotorwa kubva rwiyo rwakakurumbira. Zvese izvi zvinokubatsira iwe nekukurumidza kuyeuka maitiro ekugadzirisa zvikanganiso zvakajairika.

Tinoyeuchidza: kune vese vaverengi veHabr - a 10 ruble mutengo paunenge uchinyoresa mune chero Skillbox kosi uchishandisa iyo Habr promo kodhi.

Skillbox inokurudzira: Nzira inoshanda "Mobile Developer PRO".

TypeError: pfuma haina kutsanangurwa

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)

Iyo kodhi yemuenzaniso iri pamusoro inokanda kukanganisa Kusina Kubatwa TypeError: Haikwanise kuverenga chivakwa 'rombo rakanaka' rekusatsanangurwa. Dambudziko nderekuti chinhu chemusikana hachina pfuma ine zita, nyangwe iine midziyo yezita. Uye sezvo musikana.zita pfuma haina kutsanangurwa, haugone kuiwana, nekuti pamutemo haipo. Asi kana ukatsiva girl.named.lucky ne girl.name, ipapo zvese zvichashanda uye chirongwa chichadzoka Lucky.

Iwe unogona kudzidza zvakawanda nezve zvivakwa verenga pano.

Maitiro ekugadzirisa TypeErrors

TypeErrors inoitika kana mugadziri anoedza kuita zviito pane data risingaenderane neimwe mhando. Mienzaniso inosanganisira kushandisa .bold(), kukumbira chinhu chisina kutsanangurwa, kana kudana basa risiri iro chairo basa.

Saka, kana ukaedza kufonera musikana(), uchawana kukanganisa Uncaught TypeError: yourVariable.bold is not a function and girl is not a function, nekuti chaicho chinhu chiri kudanwa, kwete basa.

Kuti ubvise zvikanganiso, unofanirwa kudzidza zvakasiyana-siyana. Saka, musikana chii? Musikana anonzi ani? Iwe unogona kuzviwana kuburikidza nekuongorora kodhi, kuratidza zvinoshanduka uchishandisa console.log, debugger command, kana kudaidza zita rakasiyana mukoni. Iwe unofanirwa kuve nechokwadi chekuti zvinogoneka kushanda pane iyo data data irimo mune inoshanduka. Kana isingakodzeri, shandura, semuenzaniso, wedzera mamiriro kana edza..catch block - uye uwane kutonga pamusoro pekuita kwekushanda.

Stack Overflow

Kana iwe uchitenda vanyori verwiyo rwerwiyo Baby One More Time (uyu ndiBritney Spears, hongu), saka izwi rakarova mune ino mamiriro rinoreva chishuwo chemuimbi kuti adaidzwe zvakare (heino tsananguro yemamiriro ezvinhu chaiwo. rwiyo - chinyorwa chemuturikiri). Zvinogona kunge zviri izvo kuti chishuwo ichi chichatungamira mukuwedzera kwenhamba yekufona muhupenyu chaihwo. Asi mukuronga, uku kudzokororwa kunogona kukonzera kukanganisa kana stack yekufona ikafashukira.

Iko kukanganisa kunoratidzika seizvi:

Mhosva: Pasisina nzvimbo yakapetwa (Edge)
YemukatiError: yakawandisa kudzokorora (Firefox)
RangeError: Hukuru hwekufona stack saizi hwapfuura (Chrome)

Kufashukira kwakawanda kunoitika kana mugadziri akasafunga iyo base kesi mukudzokororwa, kana kana iyo kodhi isingatarise iyo yakarongwa nyaya.

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

Muchiitiko ichi, stillBelieve haambonyepi, saka oneMoreTime ichadaidzwa nguva yega yega, asi basa racho harife rakapera.

Kana iwe ukatanga kuvimba neshamwari mbiri, izvi zvinoderedza kusurukirwa, uye haufaniri kumirira kudana.

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

Muenzaniso inyaya dzine zvishwe zvisingaperi, kana sisitimu isingaburitse meseji yekukanganisa, asi peji panoitwa JavaScript kodhi inongooma. Izvi zvinoitika kana iyo nguva loop isina mamiriro ekugumisa.

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

Iwe unogona kugadzirisa dambudziko nenzira inotevera:

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

Debugging kusingaperi zvishwe uye recursions

Kana uine dambudziko risingaperi loop, unofanirwa kuvhara iyo tebhu muChrome kana Edge, uye kuvhara hwindo rebrowser muFirefox. Mushure meizvi, unofanirwa kunyatsoongorora kodhi. Kana iwe usingakwanise kuwana dambudziko, zvakakodzera kuwedzera debugger command kune yako loop kana basa uye kutarisa kukosha kwezvakasiyana. Kana mhedzisiro isingaenderane nezvaitarisirwa, saka tinoitsiva, izvi zvinogona kuitwa nyore.

Mumuenzaniso uri pamusoro, debugger inofanira kuwedzerwa semutsara wekutanga webasa kana loop. Ipapo iwe unofanirwa kuvhura iyo debug tebhu muChrome, uchiongorora zvinosiyana muhukuru. Uchishandisa bhatani rinotevera unogona kuteedzera shanduko dzavo pane imwe neimwe iteration. Zvose izvi zviri nyore kuita, uye kazhinji dambudziko rinowanikwa.

Unogona kuverenga zvakawanda nezve izvi zvese pano (yeChrome) uye pano (yeFirefox).

Syntax kukanganisa

Imwe yezvikanganiso zvakajairika muJavaScript ndeye SyntaxError. Mameseji edhita ekuwedzera achakubatsira iwe kudzivirira iwo. Semuenzaniso, Bracket Pair Colorizer inomaka mabhuraketi mukodhi ine mavara akasiyana, uye Prettier kana yakafanana yekuongorora chishandiso inoita kuti zvikwanise kukurumidza kuwana zvikanganiso. Iyo yakanakisa sarudzo yekudzikisa mukana weSyntaxError ishoma nesting.

Govera mumashoko: chii chaunoita kudzivirira kukanganisa kana kukurumidza kuona nekubvisa?

Skillbox inokurudzira:

Source: www.habr.com

Voeg