Kash, na sake yi: Gyara kurakurai gama gari a JavaScript

Kash, na sake yi: Gyara kurakurai gama gari a JavaScript

Rubuta lambar JavaScript na iya zama ƙalubale kuma wani lokacin abin ban tsoro, kamar yadda yawancin masu haɓakawa suka saba da su. A cikin aikin, babu makawa kurakurai suna tasowa, kuma wasu daga cikinsu ana maimaita su akai-akai. Wannan labarin, da nufin novice developers, yayi magana game da wadannan kurakurai da kuma yadda za a warware su. Don bayyanawa, ana ɗaukar sunayen ayyuka, kadarori da abubuwa daga shahararriyar waka. Duk wannan yana taimaka muku da sauri tuna yadda ake gyara kurakuran gama gari.

Muna tunatarwa: ga duk masu karatu na "Habr" - rangwame na 10 rubles lokacin yin rajista a kowane kwas na Skillbox ta amfani da lambar talla "Habr".

Skillbox yana ba da shawarar: Hakikanin hanya "Mobile Developer PRO".

Kuskuren Type: Ba a bayyana dukiya ba

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)

Lambar misalin da ke sama tana jefa kuskuren Uncaught TypeError: Ba za a iya karanta kayan 'sa'a' na rashin fayyace ba. Matsalar ita ce abin yarinyar ba shi da wata kadara mai suna, duk da cewa tana da kayan suna. Kuma tun da yarinyar.mai suna dukiya ba a bayyana ba, ba za ku iya samun damar yin amfani da shi ba, saboda a zahiri ba ya wanzu. Amma idan kun maye gurbin yarinya.mai suna.lucky da sunan yarinya, to komai zai yi aiki kuma shirin zai dawo Lucky.

Kuna iya ƙarin koyo game da kaddarorin karanta nan.

Yadda ake warware TypeErrors

Nau'in Kuskure yana faruwa ne lokacin da mai tsara shirye-shirye yayi ƙoƙarin yin ayyuka akan bayanan da basu dace da takamaiman nau'in ba. Misalai sun haɗa da yin amfani da .bold(), neman abin da ba a bayyana ba, ko kiran aikin da ba ainihin aiki ba.

Don haka, idan kun yi ƙoƙarin kiran yarinya (), za ku sami kuskuren Uncaught TypeError: yourVariable.bold ba aiki ba ne kuma yarinya ba aiki ba ne, saboda ainihin abu ne da ake kira, ba aiki ba.

Don kawar da kurakurai, kuna buƙatar yin nazarin masu canji. To, menene yarinya? Menene yarinya.mai suna? Kuna iya ganowa ta hanyar nazarin lambar, nuna masu canji ta amfani da console.log, umarnin debugger, ko kiran sunan m a cikin na'ura wasan bidiyo. Kuna buƙatar tabbatar da cewa yana yiwuwa a yi aiki a kan nau'in bayanan da ke cikin m. Idan bai dace ba, canza shi, alal misali, ƙara yanayi ko gwada… kama toshe - kuma sami iko akan aiwatar da aikin.

Cigaba da cika

Idan kun yi imani da mawallafin waƙoƙin zuwa waƙar Baby One More Time (wannan shine Britney Spears, yeah), to, kalmar da aka buga a cikin wannan mahallin yana nufin sha'awar mawaƙin a sake kiransa (nan ne bayanin ainihin mahallin mawaƙa. waƙa - bayanin mai fassara). Yana iya yiwuwa wannan sha'awar zai haifar da karuwa a yawan kira a rayuwa ta ainihi. Amma a cikin shirye-shiryen, wannan sake dawowa ne wanda zai iya haifar da kuskure idan tarin kira ya cika.

Kurakurai sunyi kama da haka:

Kuskure: Ya fita daga sararin samaniya (Edge)
Kuskuren Cikin Gida: Maimaituwa da yawa (Firefox)
Kuskuren Range: Matsakaicin girman tarin kira ya wuce (Chrome)

Matsala tari yana faruwa idan mai haɓakawa bai yi la'akari da harkashin tushe a cikin maimaitawa ba, ko kuma idan lambar ba ta magance lamarin da aka yi niyya ba.

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

A wannan yanayin, har yanzuBelieve ba zai taɓa zama ƙarya ba, don haka za a kira MoreTime kowane lokaci, amma aikin ba zai taɓa ƙarewa ba.

Idan ka fara dogara ga abokai biyu, wannan zai rage zaman kadaici, kuma ba za ka jira kira ba.

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

Misali shi ne lokuta tare da madaukai marasa iyaka, lokacin da tsarin ba ya haifar da saƙon kuskure, amma shafin da aka aiwatar da lambar JavaScript kawai ya daskare. Wannan yana faruwa idan madauki ba shi da yanayin ƙarewa.

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

Kuna iya magance matsalar kamar haka:

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

Ana gyara madaukai marasa iyaka da maimaitawa

Idan kuna da matsalar madauki mara iyaka, kuna buƙatar rufe shafin a Chrome ko Edge, sannan ku rufe taga mai bincike a Firefox. Bayan wannan, kuna buƙatar bincika lambar a hankali. Idan ba za ku iya nemo matsalar ba, yana da kyau ƙara umarni na gyara kuskure zuwa madauki ko aikin ku da bincika ƙimar masu canji. Idan sakamakon bai dace da abin da aka sa ran ba, to, mun maye gurbinsa, ana iya yin wannan cikin sauƙi.

A cikin misalin da ke sama, ya kamata a ƙara mai gyara kuskure azaman layin farko na aikin ko madauki. Sannan kuna buƙatar buɗe shafin gyara kuskure a cikin Chrome, bincika masu canji a cikin iyakokin. Yin amfani da maɓallin na gaba zaku iya bin diddigin canje-canjen su a kowane juzu'i. Duk wannan yana da sauƙin yi, kuma a mafi yawan lokuta ana samun matsalar.

Kuna iya karanta ƙarin game da duk wannan anan (don chrome) kuma (don Firefox).

Kuskuren daidaitawa

Ɗaya daga cikin kurakurai na yau da kullun a cikin JavaScript shine SyntaxError. Ƙwararren editan rubutu zai taimake ka ka guje su. Misali, Bracket Pair Colorizer yana yin alamar maɓalli a cikin lambar tare da launuka daban-daban, kuma Prettier ko kayan aikin bincike iri ɗaya yana ba da damar samun kurakurai cikin sauri. Mafi kyawun zaɓi don rage yuwuwar SyntaxError shine ƙaramin gida.

Raba cikin sharhi: menene kuke yi don hana kurakurai ko ganowa da kawar da su da sauri?

Skillbox yana ba da shawarar:

source: www.habr.com

Add a comment