Owu, ndiyenzile kwakhona: Ukulungisa iimpazamo eziqhelekileyo kwiJavaScript

Owu, ndiyenzile kwakhona: Ukulungisa iimpazamo eziqhelekileyo kwiJavaScript

Ukubhala ikhowudi yeJavaScript kunokuba ngumceli mngeni kwaye ngamanye amaxesha kukhwankqise, njengoko uninzi lwabaphuhlisi luqhelene nalo. Kwinkqubo yomsebenzi, iimpazamo ziyavela, kwaye ezinye zazo ziphindaphindiwe rhoqo. Eli nqaku, elijoliswe kubaphuhlisi be-novice, lithetha ngezi mpazamo kunye nendlela yokuzisombulula. Ukucaca, amagama emisebenzi, iipropathi kunye nezinto zithathwa kuyo ingoma edumileyo. Konke oku kukunceda ukhumbule ngokukhawuleza indlela yokulungisa iimpazamo eziqhelekileyo.

Siyakhumbuza: kubo bonke abafundi be "Habr" - isaphulelo se-ruble ye-10 xa ubhalisa kuyo nayiphi na ikhosi ye-Skillbox usebenzisa ikhowudi yokuphromotha "Habr".

I-Skillbox iyacebisa: Ikhosi esebenzayo "UMqulunqi we-PRO".

TypeError: ipropathi ayichazwanga

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)

Ikhowudi yomzekelo engentla iphosa impazamo Uncaught TypeError: Ayikwazi ukufunda ipropathi 'ithamsanqa' lokungachazwanga. Ingxaki kukuba into yentombazana ayinayo ipropathi enegama, nangona inalo igama. Kwaye ekubeni ipropathi egama lentombazana ayichazwanga, awukwazi ukufikelela kuyo, kuba ngokusemthethweni ayikho. Kodwa ukuba uthatha indawo girl.named.lucky nge girl.name, ke yonke into iya kusebenza kwaye inkqubo iya kubuya uLucky.

Unokufunda ngakumbi malunga neepropathi funda apha.

Uzicombulula njani ii-TypeErrors

Ii-TypeErrors zenzeka xa umdwelisi wenkqubo ezama ukwenza izenzo kwidatha engahambelani nohlobo oluthile. Imizekelo iquka ukusebenzisa .bold(), ukucela ipropati engachazwanga, okanye ukubiza umsebenzi ongengomsebenzi ngokwenene.

Ngoko ke, ukuba uzama ukufowunela girl(), uya kufumana impazamo Uncaught TypeError: yourVariable.bold ayingomsebenzi kwaye intombazana ayingomsebenzi, kuba eneneni yinto ebizwayo, ayingomsebenzi.

Ukuze uphelise iimpazamo, kufuneka ufunde izinto eziguquguqukayo. Ngoko, yintoni intombazana? Yintoni intombazana.igama? Unokufumana ngokuhlalutya ikhowudi, ukubonisa iinguqu usebenzisa i-console.log, umyalelo we-debugger, okanye ukubiza igama eliguquguqukayo kwi-console. Kufuneka uqinisekise ukuba kunokwenzeka ukuba usebenze kuhlobo lwedatha equlethwe kuguquko. Ukuba ayifaneleki, yitshintshe, umzekelo, yongeza imeko okanye uzame..bamba ibhloko - kwaye ufumane ulawulo phezu kokuphunyezwa komsebenzi.

Ukugcwala kwisitokhwe

Ukuba uyakholelwa ukuba ababhali beengoma zengoma ethi Baby One More Time (le nguBritney Spears, ewe), ke igama elithi hit kulo mongo lithetha umnqweno wemvumi wokubizwa kwakhona (nantsi ingcaciso yomxholo wengoma. ingoma - inqaku lomguquleli). Kungenzeka ukuba lo mnqweno uya kukhokelela ekwandeni kwenani leefowuni ebomini bokwenyani. Kodwa kwiprogramu, oku kukuphinda kubangele impazamo ukuba isitakhi sefowuni siyaphuphuma.

Iimpazamo zikhangeleka ngolu hlobo:

Imposiso: Akukho sithuba sokupakisha (Edge)
Impazamo yangaphakathi: ukuphindaphinda kakhulu (Firefox)
RangeError: Ubuninzi bobungakanani bomthamo womnxeba bugqithisiwe (Chrome)

Ukuphuphuma kwe-stack kwenzeka ukuba umphuhlisi akayiqwalasela imeko yesiseko kwi-recursion, okanye ukuba ikhowudi ayibhekiseli kwimeko ekujoliswe kuyo.

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

Kule meko, i- stillBelieve ayinakuze ibe bubuxoki, ke i-OneMoreTime iya kubizwa ngalo lonke ixesha, kodwa umsebenzi awusoze ugqibezele.

Ukuba uqala ukuthembela kubahlobo ababini, oku kuya kunciphisa isizungu, kwaye akuyi kufuneka ulinde umnxeba.

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

Umzekelo ziimeko ezinelophu ezingapheliyo, xa inkqubo ingavelisi myalezo wemposiso, kodwa iphepha apho ikhowudi yeJavaScript isenziwa khona ngokulula. Oku kwenzeka ukuba i-loop loop ayinayo imeko yokuphelisa.

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

Ungayisombulula ingxaki ngolu hlobo lulandelayo:

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

Ukulungisa iilophu ezingapheliyo kunye nokuphindaphinda

Ukuba unengxaki ye-loop engapheliyo, kufuneka uvale ithebhu kwiChrome okanye kwi-Edge, kwaye uvale ifestile yesikhangeli kwiFirefox. Emva koko, kufuneka uhlalutye ngokucophelela ikhowudi. Ukuba awukwazi ukufumana ingxaki, kufanelekile ukongeza umyalelo we-debugger kwi-loop yakho okanye umsebenzi kunye nokujonga amaxabiso ezinto eziguquguqukayo. Ukuba umphumo awuhambelani noko bekulindelekile, ngoko sithatha indawo, oku kunokwenziwa lula.

Kulo mzekelo ungentla, i-debugger kufuneka yongezwe njengomgca wokuqala womsebenzi okanye i-loop. Emva koko kufuneka uvule ithebhu ye-debug kwi-Chrome, uhlalutya izinto eziguquguqukayo kwi-scope. Usebenzisa iqhosha elilandelayo unokulandelela utshintsho lwabo ngokuphinda-phinda. Konke oku kulula ukwenza, kwaye kwiimeko ezininzi ingxaki ifunyenwe.

Unokufunda ngakumbi ngayo yonke le nto apha (yechrome) kwaye apha (yeFirefox).

Impazamo yesivakalisi

Enye yezona mpazamo zixhaphakileyo kwiJavaScript yiSyntaxError. Izandiso zomhleli wombhalo ziya kukunceda uziphephe. Ngokomzekelo, i-Bracket Pair Colorizer iphawula izibiyeli kwikhowudi enemibala eyahlukeneyo, kwaye i-Prettier okanye isixhobo sokuhlalutya esifanayo senza ukuba kube lula ukufumana iimpazamo ngokukhawuleza. Olona khetho lungcono lokunciphisa ukubakho kwe-SyntaxError yindlwane encinci.

Yabelana ngamagqabantshintshi: wenza ntoni ukukhusela iimpazamo okanye ukuzibona ngokukhawuleza kwaye uziphelise?

I-Skillbox iyacebisa:

umthombo: www.habr.com

Yongeza izimvo