Oops, I did it again: ΠΎΡ‚Π»Π°Π΄ΠΊΠ° распространСнных ошибок Π² JavaScript

Oops, I did it again: ΠΎΡ‚Π»Π°Π΄ΠΊΠ° распространСнных ошибок Π² JavaScript

ΠŸΠΎΡ€ΠΎΠΉ написаниС ΠΊΠΎΠ΄Π° JavaScript даСтся слоТно, Π° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈ просто ΠΏΡƒΠ³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π·Π½Π°ΠΊΠΎΠΌΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ. Π’ процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ошибки, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚Π΅Π½ΡŒΠΊΠΎ. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅, рассчитанной Π½Π° Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², рассказываСтся ΠΎΠ± этих ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈ способах ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Для наглядности названия Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, свойств ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² взяты ΠΈΠ· популярной пСсни. ВсС это ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ быстро Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ распространСнныС ошибки.

НапоминаСм: для всСх Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ Β«Π₯Π°Π±Ρ€Π°Β» β€” скидка 10 000 Ρ€ΡƒΠ±Π»Π΅ΠΉ ΠΏΡ€ΠΈ записи Π½Π° любой курс Skillbox ΠΏΠΎ ΠΏΡ€ΠΎΠΌΠΎΠΊΠΎΠ΄Ρƒ Β«Π₯Π°Π±Ρ€Β».

Skillbox Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚: ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ курс Β«ΠœΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ PROΒ».

TypeError: свойство Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ

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)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅, Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ Uncaught TypeError: Cannot read property β€˜lucky’ of undefined. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° girl Π½Π΅Ρ‚ свойства named, хотя Π΅ΡΡ‚ΡŒ свойство name. А ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ свойство girl.named Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ, Ρ‚ΠΎ нСльзя ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ доступ, вСдь Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΎΠ½ΠΎ Π½Π΅ сущСствуСт. Но Π²ΠΎΡ‚ Ссли Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ girl.named.lucky Π½Π° girl.name, Ρ‚ΠΎ всС Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Π΅Ρ€Π½Π΅Ρ‚ Lucky.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ свойствах ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ здСсь.

Бпособы устранСния ошибок TypeError

Ошибки TypeError ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° программист пытаСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ дСйствия с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ .bold(), запрос свойства undefined ΠΈΠ»ΠΈ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ являСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ.

Π’Π°ΠΊ, Ссли ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ girl (), Ρ‚ΠΎ появится ошибка Uncaught TypeError: yourVariable.bold is not a function ΠΈ girl is not a function, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π° самом Π΄Π΅Π»Π΅ вызываСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π° Π½Π΅ функция.

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ ошибки, Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Π’Π°ΠΊ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ girl? А Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ girl.named? Π£Π·Π½Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ, Ссли ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, вывСсти ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ console.log с, ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ debugger ΠΈΠ»ΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² консоли. НуТно ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТится Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Если ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΅Π³ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ условиС ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊ try..catch β€” ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка

Если ΠΏΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€Π°ΠΌ слов пСсни Baby One More Time (это Π‘Ρ€ΠΈΡ‚Π½ΠΈ Бпирс, Π°Π³Π°), Ρ‚ΠΎ слово hit Π² Π΄Π°Π½Π½ΠΎΠΌ контСкстС ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΏΠ΅Π²ΠΈΡ†Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΠ»ΠΈ Π΅Ρ‰Π΅ Ρ€Π°Π· (здСсь пояснСниС самого контСкста пСсни, β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°). Π’ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ количСства Π·Π²ΠΎΠ½ΠΊΠΎΠ² Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ. Но Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ это рСкурсия, способная Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² случаС пСрСполнСния стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ².

Ошибки выглядят ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Error: Out of stack space (Edge)
InternalError: too much recursion (Firefox)
RangeError: Maximum call stack size exceeded (Chrome)

ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка происходит, Ссли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π΅ ΡƒΡ‡Π΅Π» Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ случай Π² рСкурсии Π»ΠΈΠ±ΠΎ ΠΆΠ΅ Ссли ΠΊΠΎΠ΄ Π½Π΅ обращаСтся ΠΊ прСдусмотрСнному ΡΠ»ΡƒΡ‡Π°ΡŽ.

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

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС stillBelieve Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false, поэтому ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² oneMoreTime, Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ.

Если ΠΆΠ΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π½Π°Π΄Π΅ΡΡ‚ΡŒΡΡ Π½Π° Π΄Π²ΡƒΡ… Π΄Ρ€ΡƒΠ·Π΅ΠΉ, это снизит loneliness (одиночСство), ΠΈ Π·Π²ΠΎΠ½ΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ ΠΆΠ΄Π°Ρ‚ΡŒ.

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

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ привСсти случаи с бСсконСчными Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° систСма Π½Π΅ Π²Ρ‹Π΄Π°Π΅Ρ‚ сообщСниС ΠΎΠ± ошибкС, Π° страница, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ выполняСтся JavaScript-ΠΊΠΎΠ΄, просто зависаСт. Π’Π°ΠΊ случаСтся, Ссли Ρƒ Ρ†ΠΈΠΊΠ»Π° while Π½Π΅Ρ‚ условия Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ.

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

Π Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

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

ΠžΡ‚Π»Π°Π΄ΠΊΠ° бСсконСчных Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ рСкурсий

Если Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с бСсконСчным Ρ†ΠΈΠΊΠ»ΠΎΠΌ, Π² Chrome ΠΈΠ»ΠΈ Edge Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ, Π° Π² Firefox β€” ΠΎΠΊΠ½ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. ПослС этого Π½Π°Π΄ΠΎ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄. Если Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, стоит Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ debugger Π² Ρ†ΠΈΠΊΠ» ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Если Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π΅ соотвСтствуСт ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΌΡƒ, Ρ‚ΠΎ замСняСм, это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Π½ Π²Ρ‹ΡˆΠ΅, debugger стоит Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ»Π°. ΠŸΠΎΡ‚ΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄Π΅Π±Π°Π³-Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Π² Chrome, ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² scope. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ next ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ всС это просто, ΠΈ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° находится.

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ±ΠΎ всСм этом ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ здСсь (для Chrome) ΠΈ здСсь (для Firefox).

Ошибка Π² синтаксисС

Одна ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных ошибок Π² JavaScript β€” SyntaxError. Π˜Π·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. Π’Π°ΠΊ, Bracket Pair Colorizer ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ скобки Π² ΠΊΠΎΠ΄Π΅ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ†Π²Π΅Ρ‚Π°ΠΌΠΈ, Π° Prettier ΠΈΠ»ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ инструмСнт Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ быстро Π½Π°ΠΉΡ‚ΠΈ ошибки. Π›ΡƒΡ‡ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ появлСния SyntaxError β€” минимальная Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ Π² коммСнтариях: Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ошибок ΠΈΠ»ΠΈ быстро ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Π»ΠΈΠΊΠ²ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ…?

Skillbox Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ