Oops, min dîsa wiya kir: Di JavaScriptê de çewtiyên hevpar derxînin

Oops, min dîsa wiya kir: Di JavaScriptê de çewtiyên hevpar derxînin

Nivîsandina koda JavaScript-ê dikare dijwar be û carinan jî tirsnak be, wekî ku gelek pêşdebiran pê dizanin. Di pêvajoya xebatê de, xeletî bê guman derdikevin, û hin ji wan pir caran têne dubare kirin. Ev gotar, ku ji bo pêşdebirên nûjen têne armanc kirin, li ser van xeletiyan û çawaniya çareserkirina wan diaxive. Ji bo zelaliyê, navên fonksiyon, taybetmendî û tiştan ji wan têne girtin strana gelêrî. Hemî ev ji we re dibe alîkar ku hûn zû bi bîr bînin ka meriv çawa xeletiyên hevpar rast dike.

Em bînin bîra xwe: ji bo hemî xwendevanên "Habr" - dema ku hûn beşdarî qursek Skillbox-ê bi karanîna koda danasînê ya "Habr" têne qeyd kirin 10 rubleyan dakêşin.

Skillbox pêşniyar dike: Kursa pratîk "Pêşvebirê Mobîl PRO".

TypeError: taybetmendî nehatiye diyarkirin

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)

Nimûneya koda li jor xeletiya Uncaught TypeError: Nikare taybetmendiya 'lucky' ya ne diyar bixwîne. Pirsgirêk ev e ku tişta keçikê xwedan taybetmendiyek binavkirî nîne, her çend xwediyê navekî be jî. Û ji ber ku milkê keç.navkirî ne diyar e, hûn nikarin bigihîjin wê, ji ber ku bi fermî ew tune. Lê heke hûn girl.named.lucky bi girl.name veguherînin, wê hingê her tişt dê bixebite û bername dê Lucky vegere.

Hûn dikarin li ser taybetmendiyên bêtir fêr bibin li vir bixwînin.

Meriv çawa TypeErrors çareser dike

TypeErrors çêdibin dema ku bernamenûs hewl dide ku li ser daneyên ku bi celebek taybetî re hevûdu nagirin çalakiyan pêk bîne. Nimûne bi karanîna .bold(), daxwaza taybetmendiyek nenaskirî, an gazîkirina fonksiyonek ku bi rastî ne fonksiyonek e.

Ji ber vê yekê, heke hûn hewl bidin ku gazî girl() bikin, hûn ê xeletiya Uncaught TypeError bistînin: yourVariable.bold ne fonksiyonek e û keç ne fonksiyonek e, ji ber ku ew bi rastî tiştek tê gotin, ne fonksiyonek e.

Ji bo ku hûn xeletiyan ji holê rakin, hûn hewce ne ku guhêrbaran bixwînin. Ji ber vê yekê, keçek çi ye? Navê keçikê çi ye? Hûn dikarin bi analîzkirina kodê, nîşankirina guhêrbaran bi karanîna console.log, fermana debugger, an gazîkirina navê guhêrbar di konsolê de fêr bibin. Pêdivî ye ku hûn pê ewle bin ku gengaz e ku meriv li ser celebê daneya ku di guhêrbar de heye bixebite. Ger ew negunca be, wê biguhezînin, mînakî, şertek lê zêde bikin an jî biceribînin..bloka bigire - û li ser pêkanîna operasyonê kontrola xwe bistînin.

Stack Overflow

Heke hûn ji nivîskarên gotinên strana Baby One More Time bawer dikin (ev Britney Spears e, erê), wê hingê peyva hit di vê çarçoveyê de tê wateya xwestek stranbêj ku ji nû ve were gazî kirin (li vir ravekirina çarçoveyek pir stran - nota wergêr). Dibe ku ev daxwaz bibe sedema zêdebûna hejmara bangên di jiyana rast de. Lê di bernamekirinê de, ev vegerandinek e ku heke stûna bangê zêde bibe dibe sedema xeletiyekê.

Xeletî wiha xuya dikin:

Çewtî: Ji cîhê stikê ne (Edge)
Çewtiya Navxweyî: Vegera pir zêde (Firefox)
Çewtiya Rêjeyê: Mezinahiya stoka bangê ya herî zêde derbas bû (Chrome)

Ger pêşdebir doza bingehîn di vegerê de nehesibîne, an jî heke kod doza mebestê çareser neke, zêdebûnek stackê çêdibe.

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

Di vê rewşê de, stillBelieve çu carî nikare derewîn be, ji ber vê yekê dê her carê yekMoreTime were gazî kirin, lê fonksiyon dê çu carî neqede.

Ger hûn dest pê bikin ku xwe bispêrin du hevalan, ev ê tenêtiyê kêm bike, û hûn ê ne hewce ne ku li benda bangekê bisekinin.

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

Mînak dozên bi lûkên bêdawî ne, dema ku pergal peyamek xeletiyek çênake, lê rûpela ku koda JavaScript-ê li ser tê darve kirin bi tenê dicemidîne. Ev diqewime ger çerxa dema ku şertek bidawîbûnê tune be.

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

Hûn dikarin pirsgirêkê wekî jêrîn çareser bikin:

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

Rêzkirin û vegerandinên bêsînor rastkirin

Ger pirsgirêkek weya bêdawî hebe, hûn hewce ne ku tabê li Chrome an Edge bigire, û pencereya gerokê li Firefox-ê bigire. Piştî vê yekê, hûn hewce ne ku kodê bi baldarî analîz bikin. Ger hûn nikaribin pirsgirêkê bibînin, hêja ye ku emrê debuggerê li loop an fonksiyona xwe zêde bikin û nirxên guhêrbaran kontrol bikin. Ger encam ne li gorî ya ku dihat hêvî kirin, wê hingê em wê biguhezînin, ev dikare bi hêsanî were kirin.

Di mînaka li jor de, debugger divê wekî rêza yekem a fonksiyonê an lûkê were zêdekirin. Dûv re hûn hewce ne ku tabloya debugê li Chrome vekin, guhêrbarên di çarçovê de analîz bikin. Bi karanîna bişkoja paşîn hûn dikarin bi her dubarekirinê re guheztinên wan bişopînin. Hemî ev hêsan e ku meriv bike, û di pir rewşan de pirsgirêk tê dîtin.

Hûn dikarin li ser van hemîyan bêtir bixwînin vir (ji bo Chrome) û li vir (ji bo Firefox).

Çewtiya hevoksaziyê

Yek ji xeletiyên herî gelemperî di JavaScriptê de SyntaxError e. Berfirehkirina edîtorê nivîsê dê ji we re bibe alîkar ku hûn ji wan dûr bikevin. Mînakî, Bracket Pair Colorizer di kodê de bi rengên cihêreng bendikên xwe nîşan dide, û Prettier an amûrek analîzek wekhev dihêle ku meriv zû xeletiyan bibîne. Vebijarka çêtirîn ji bo kêmkirina îhtîmala SyntaxError hêlîna hindiktirîn e.

Di şîroveyan de parve bikin: hûn çi dikin ku pêşî li xeletiyan bigirin an zû wan bibînin û ji holê rakin?

Skillbox pêşniyar dike:

Source: www.habr.com

Add a comment