Oops, ke e entse hape: Ho lokisa liphoso tse tloaelehileng ho JavaScript

Oops, ke e entse hape: Ho lokisa liphoso tse tloaelehileng ho JavaScript

Ho ngola khoutu ea JavaScript ho ka ba phephetso 'me ka linako tse ling ho tšosa haholo, joalo ka ha bahlahisi ba bangata ba e tseba. Nakong ea mosebetsi, liphoso li hlaha ka mokhoa o ke keng oa qojoa, 'me tse ling tsa tsona li phetoa khafetsa. Sengoliloeng sena, se lebisitsoeng ho baetsi ba li-novice, se bua ka liphoso tsena le mokhoa oa ho li rarolla. Bakeng sa ho hlaka, mabitso a mesebetsi, thepa le lintho a nkiloe ho pina e tsebahalang. Sena sohle se u thusa ho hopola kapele mokhoa oa ho lokisa liphoso tse tloaelehileng.

Re hopotsa: bakeng sa babali bohle ba "Habr" - theolelo ea li-ruble tse 10 ha u ngolisa thupelong efe kapa efe ea Skillbox u sebelisa khoutu ea papatso ea "Habr".

Skillbox e khothaletsa: Tsela e sebetsang "Mobile Developer PRO".

TypeError: thepa ha e hlalosoe

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)

Mohlala oa mohlala o ka holimo o hlahisa phoso ea Uncaught TypeError: Ha e khone ho bala thepa 'lehlohonolo' e sa hlalosoang. Bothata ke hore ntho ea ngoanana ha e na thepa e bitsoang, leha e na le thepa ea lebitso. 'Me kaha thepa e bitsoang ngoanana ha e hlalosoe, u ke ke ua e fumana, hobane ka molao ha e eo. Empa haeba u nka sebaka sa girl.named.lucky with girl.name, joale ntho e' ngoe le e 'ngoe e tla sebetsa' me lenaneo le tla khutlisa Lucky.

U ka ithuta ho eketsehileng ka thepa bala mona.

Mokhoa oa ho rarolla mathata a TypeError

Li-TypeErrors li etsahala ha moetsi oa mananeo a leka ho etsa liketso ho data e sa lumellaneng le mofuta o itseng. Mehlala e kenyelletsa ho sebelisa .bold(), ho kopa thepa e sa hlalosoang, kapa ho letsetsa tšebetso eo e seng mosebetsi.

Kahoo, haeba u leka ho letsetsa girl(), u tla fumana phoso Uncaught TypeError: yourVariable.bold ha se mosebetsi mme ngoanana ha se mosebetsi, hobane ha e le hantle ke ntho e bitsoang, eseng mosebetsi.

E le ho felisa liphoso, ho hlokahala hore u ithute mefuta-futa. Joale, ngoanana ke eng? Ngoanana.o bitsoa mang? U ka e fumana ka ho hlahloba khoutu, ho hlahisa mefuta-futa u sebelisa console.log, taelo ea debugger, kapa ho bitsa lebitso le feto-fetohang ho console. U hloka ho etsa bonnete ba hore hoa khoneha ho sebetsa mofuteng oa data o nang le phapang. Haeba e sa lumellane, e fetole, mohlala, eketsa boemo kapa leka..catch block - 'me u fumane taolo holim'a ts'ebetso ea ts'ebetso.

Ho Aroha ha Stack

Haeba u lumela bangoli ba mantsoe a pina ea Baby One More Time (ena ke Britney Spears, ee), joale lentsoe le otlang moelelong ona le bolela takatso ea sebini ea ho bitsoa hape (mona ke tlhaloso ea moelelo oa taba. pina - mongolo oa mofetoleli). E ka 'na eaba takatso ena e tla lebisa ho eketseha ha palo ea mehala bophelong ba sebele. Empa lenaneong, sena ke phetohelo e ka bakang phoso haeba mohala oa mohala o tletse.

Liphoso li shebahala tjena:

Phoso: Sebaka ha se teng (Edge)
InternalError: recursion e ngata haholo (Firefox)
RangeError: Boholo bo fetelletseng ba stack ea mohala (Chrome)

Ho phalla ha stack ho etsahala haeba moqapi a sa nahane ka taba ea motheo nakong ea ho khutla, kapa haeba khoutu e sa sebetsane le nyeoe e reriloeng.

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

Tabeng ena, stillBelieve e ke ke ea bua leshano, kahoo OneMoreTime e tla bitsoa nako le nako, empa mosebetsi o ke ke oa fela.

Haeba u qala ho itšetleha ka metsoalle e 'meli, sena se tla fokotsa bolutu,' me u ke ke ua tlameha ho emela pitso.

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

Mohlala ke linyeoe tse nang le li-loops tse sa feleng, ha tsamaiso e sa hlahise molaetsa oa phoso, empa leqephe leo khoutu ea JavaScript e etsoang ho lona le hoama feela. Sena se etsahala haeba nako ea loop e se na boemo ba ho felisoa.

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

O ka rarolla bothata ka tsela e latelang:

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

Ho lokisa li-loops tse sa feleng le li-recursions

Haeba u na le bothata bo sa feleng ba loop, u hloka ho koala tabo ho Chrome kapa Edge, 'me u koale fensetere ea sebatli ho Firefox. Ka mor'a sena, o hloka ho hlahloba khoutu ka hloko. Haeba u sa fumane bothata, ho bohlokoa ho eketsa taelo ea debugger ho loop kapa ts'ebetsong ea hau le ho hlahloba boleng ba mefuta e fapaneng. Haeba sephetho se sa lumellane le se neng se lebelletsoe, joale re se nkela sebaka, sena se ka etsoa habonolo.

Mohlaleng o ka holimo, debugger e lokela ho eketsoa joalo ka mola oa pele oa tšebetso kapa loop. Ebe o hloka ho bula tabo ea debug ho Chrome, o sekaseka mefuta e fapaneng ka bophara. U sebelisa konopo e latelang u ka latela liphetoho tsa bona nako le nako ha u pheta. Sena sohle se bonolo ho se etsa, 'me hangata bothata bo fumanoa.

U ka bala haholoanyane ka tsena tsohle mona (bakeng sa chrome) mme mona (bakeng sa Firefox).

Phoso ea syntax

E 'ngoe ea liphoso tse atileng haholo ho JavaScript ke SyntaxError. Likatoloso tsa mongolo oa mongolo li tla u thusa ho li qoba. Mohlala, Bracket Pair Colorizer e tšoaea masakaneng khoutu e nang le mebala e fapaneng, 'me Prettier kapa sesebelisoa se ts'oanang sa tlhahlobo se etsa hore ho khonehe ho fumana liphoso kapele. Khetho e ntle ka ho fetisisa ea ho fokotsa monyetla oa SyntaxError ke sehlaha se fokolang.

Arolelana maikutlong: u etsa eng ho thibela liphoso kapa ho li lemoha kapele le ho li felisa?

Skillbox e khothaletsa:

Source: www.habr.com

Eketsa ka tlhaloso