undefined ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ скрипта

$ is not defined Π² jQuery: Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΈ Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ

Новая Ρ€ΡƒΠ±Ρ€ΠΈΠΊΠ° β€” Β«Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки». Π‘ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ошибки Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΈ ΠΊΠ°ΠΊ с Π½ΠΈΠΌΠΈ Π±Ρ‹Ρ‚ΡŒ.

Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, эту ΠΎΡˆΠΈΠ±ΠΊΡƒ Π²Ρ‹ встрСтитС Π² сообщСниях консоли Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, ΠΊΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊ своСму сайту ΠΊΠ°ΠΊΡƒΡŽ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ JavaScript-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ jQuery. НапримСр, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ листалка Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ ΠΈΠ»ΠΈ Ρ„ΠΎΡ€ΠΌΠ° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи.

$ is not defined ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° ваша Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ‹Ρ‚Π°Π»Π°ΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ jQuery, сама jQuery Π»ΠΈΠ±ΠΎ Π½Π΅ Π±Ρ‹Π»Π° Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π°, Π»ΠΈΠ±ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ»Π°ΡΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ.

Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сначала Ρƒ вас ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π»Π°ΡΡŒ jQuery, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌ β€” ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ эту Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ для этого достаточно ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² jQuery Ρ€Π°Π½ΡŒΡˆΠ΅ всСх Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ².

Если ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Π° jQuery Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, ΠΎΡ‚ΠΊΡƒΠ΄Π° Π²Ρ‹ Π±Π΅Ρ€Ρ‘Ρ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ jQuery. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π²Ρ‹ Π±Π΅Ρ€Ρ‘Ρ‚Π΅ Π΅Ρ‘ с ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ сайта, Π΄ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ваш Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ·Π²ΠΎΠ½ΠΈΡ‚ΡŒΡΡ (Роскомнадзор постарался ΠΈΠ»ΠΈ просто сайт Π»Π΅ΠΆΠΈΡ‚). Π’ΠΎΠ³Π΄Π° скачайтС jQuery Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ локально:

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ способ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ jQuery загруТаСтся Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, β€” ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‘ адрСс ΠΈΠ· ΠΊΠΎΠ΄Π° ΠΈ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π°Π΄Ρ€Π΅ΡΠ½ΡƒΡŽ строку Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. Если Π²Π°ΠΌ вывСдСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, Π·Π½Π°Ρ‡ΠΈΡ‚, jQuery Π²Π°ΠΌ доступна ΠΈ загруТаСтся. Если Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠΉΠ΄Ρ‘Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ β€” Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ это Π½Π° экранС.

НапримСр, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΏΠΎ этой ссылкС: https://yastatic.net/jquery/3.3.1/jquery.min.js β€” Ссли ΠΎΠ½Π° Ρƒ вас открываСтся ΠΈ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ мСсиво ΠΈΠ· ΠΊΠΎΠ΄Π°, Π·Π½Π°Ρ‡ΠΈΡ‚, jQuery для вас ΠΎΡ‚ΠΊΡ€Ρ‹Π»Π°ΡΡŒ.

jQuery β€” это Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, которая ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с элСмСнтами Π½Π° Π²Π΅Π±-страницС. НапримСр, Ссли Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JavaScript Π½Π° Π»Π΅Ρ‚Ρƒ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ надпись Π½Π° страницС, Ρ‚ΠΎ Π±Π΅Π· jQuery Π½Π°ΠΌ Π±Ρ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

document.getElementById(‘someElement’).innerHTML=’Some New Text’;

А Ρ‡Π΅Ρ€Π΅Π· jQuery всё Ρ‚ΠΎ ΠΆΠ΅ самоС дСлаСтся Ρ‚Π°ΠΊ:

$(«#someElement»).html(«Some New Text»);

Π—Π½Π°ΠΊ Π΄ΠΎΠ»Π»Π°Ρ€Π° ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ JS (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² консоли) β€” ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ jQuery, это Π΅Ρ‘ Ρ„ΠΈΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΉ Π·Π½Π°ΠΊ.

jQuery Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ распространСна, Ρ‡Ρ‚ΠΎ Π½Π° Π΅Ρ‘ основС ΡƒΠΆΠ΅ Π΄Π΅Π»Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ: всСвозмоТныС Π³Π°Π»Π΅Ρ€Π΅ΠΈ, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π»ΠΊΠΈ, интСрфСйсныС ΡˆΡ‚ΡƒΠΊΠΈ, Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Ρ‚. Π΄. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ, сначала Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π° сама jQuery, Π° ΡƒΠΆΠ΅ ΠΏΠΎΡ‚ΠΎΠΌ β€” нуТная Π²Π°ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ Π½Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ jQuery:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Ошибки Π² JavaScript ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ

JavaScript ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΡˆΠΌΠ°Ρ€ΠΎΠΌ ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅: Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ Π²Ρ‹Π΄Π°Π΅Ρ‚, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½Ρ‹ для понимания с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ взгляда, ΠΈ Π²Ρ‹Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π½ΠΎΠΌΠ΅Ρ€Π° строк Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ всСгда ΠΏΠΎΠ»Π΅Π·Π½Ρ‹. Π Π°Π·Π²Π΅ Π½Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ список, глядя Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ смысл ошибок ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ…? Π’ΠΎΡ‚ ΠΎΠ½!

НиТС прСдставлСн список странных ошибок Π² JavaScript. Π Π°Π·Π½Ρ‹Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ сообщСния ΠΎΠ± ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, поэтому ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

Как Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ошибки?

ΠŸΠ΅Ρ€Π΅Π΄ самим списком, Π΄Π°Π²Π°ΠΉΡ‚Π΅ быстро взглянСм Π½Π° структуру сообщСния ΠΎΠ± ошибкС. ПониманиС структуры ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ошибки, ΠΈ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ мСньшС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ссли Π½Π°Ρ‚ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ Π½Π° ошибки, Π½Π΅ прСдставлСнныС Π² этом спискС.

Випичная ошибка ΠΈΠ· Chrome выглядит Ρ‚Π°ΠΊ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊ самим ошибкам.

Uncaught TypeError: undefined is not a function

БвязанныС ошибки: number is not a function, object is not a function, string is not a function, Unhandled Error: β€˜foo’ is not a function, Function Expected

Π’ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π²Ρ‹Π·ΠΎΠ²Π° значСния ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π½Π΅ являСтся. НапримСр:

Π­Ρ‚Π° ошибка ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, Ссли Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½ΠΎ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚Π°Π»ΠΈΡΡŒ Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ β€œnumber is not a function” Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ число, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ΠΎΠ½ΠΎ являСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ.

Как ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ: ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² коррСктности ΠΈΠΌΠ΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Для этой ошибки, Π½ΠΎΠΌΠ΅Ρ€ строки ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ мСсто.

Uncaught ReferenceError: Invalid left-hand side in assignment

БвязанныС ошибки: Uncaught exception: ReferenceError: Cannot assign to β€˜functionCall()’, Uncaught exception: ReferenceError: Cannot assign to β€˜this’

Π’Ρ‹Π·Π²Π°Π½ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΎΠΉ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΌΡƒ, Ρ‡Π΅ΠΌΡƒ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

НаиболСС частый ΠΏΡ€ΠΈΠΌΠ΅Ρ€ этой ошибки β€” это условиС Π² if:

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ программист случайно использовал ΠΎΠ΄ΠΈΠ½ Π·Π½Π°ΠΊ равСнства вмСсто Π΄Π²ΡƒΡ…. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ β€œleft-hand side in assignment” относится ΠΊ Π»Π΅Π²ΠΎΠΉ части Π·Π½Π°ΠΊΠ° равСнства, Π°, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, лСвая Ρ‡Π°ΡΡ‚ΡŒ содСрТит Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Π΅ΠΌΡƒ нСльзя ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкС.

Uncaught TypeError: Converting circular structure to JSON

БвязанныС ошибки: Uncaught exception: TypeError: JSON.stringify: Not an acyclic Object, TypeError: cyclic object value, Circular reference in value argument not supported

Π’Π°ΠΊ ΠΊΠ°ΠΊ a ΠΈ b Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ ссылки Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π°, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊ JSON.

Как ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ: ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ цикличСскиС ссылки, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅, ΠΈΠ· всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² JSON.

Unexpected token ;

БвязанныС ошибки: Expected ), missing ) after argument list

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ JavaScript Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΠΆΠΈΠ΄Π°Π», Π½ΠΎ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ» Ρ‚Π°ΠΌ этого. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹Π·Π²Π°Π½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌΠΈ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹ΠΌΠΈ, ΠΊΡ€ΡƒΠ³Π»Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ скобками.

Π’ΠΎΠΊΠ΅Π½ Π² Π΄Π°Π½Π½ΠΎΠΉ ошибкС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌ β€” ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ написано β€œUnexpected token ]”, β€œExpected <” ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Π΅.

Как ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ: ΠΈΠ½ΠΎΠ³Π΄Π° Π½ΠΎΠΌΠ΅Ρ€ строки Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ мСстополоТСниС, Ρ‡Ρ‚ΠΎ затрудняСт исправлСниС ошибки.

Ошибка с [ ] < >( ) ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹Π·Π²Π°Π½ΠΎ Π½Π΅ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅ΠΉ ΠΏΠ°Ρ€ΠΎΠΉ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, всС Π»ΠΈ ваши скобки ΠΈΠΌΠ΅ΡŽΡ‚ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ ΠΏΠ°Ρ€Ρƒ. Π’ этом случаС, Π½ΠΎΠΌΠ΅Ρ€ строки ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, Π° Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΉ символ.

Unexpected / связано с рСгулярными выраТСниями. НомСр строки для Π΄Π°Π½Π½ΠΎΠ³ΠΎ случая ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ.

Unexpected; ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹Π·Π²Π°Π½ΠΎ символом; Π²Π½ΡƒΡ‚Ρ€ΠΈ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ массива, ΠΈΠ»ΠΈ списка Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. НомСр строки ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π΅Ρ€Π½Ρ‹ΠΌ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ случая.

Uncaught SyntaxError: Unexpected token ILLEGAL

БвязанныС ошибки: Unterminated String Literal, Invalid Line Terminator

Π’ строковом Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π΅ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π° Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°.

Как ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ: ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ всС строки ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ.

Uncaught TypeError: Cannot read property β€˜foo’ of null, Uncaught TypeError: Cannot read property β€˜foo’ of undefined

БвязанныС ошибки: TypeError: someVal is null, Unable to get property β€˜foo’ of undefined or null reference

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ null ΠΈΠ»ΠΈ undefined Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. НапримСр:

Как ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ: ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹Π·Π²Π°Π½ΠΎ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠ°ΠΌΠΈ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, всС Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ рядом со строкой, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π½Π°Π·Π²Π°Π½Ρ‹.

Uncaught TypeError: Cannot set property β€˜foo’ of null, Uncaught TypeError: Cannot set property β€˜foo’ of undefined

БвязанныС ошибки: TypeError: someVal is undefined, Unable to set property β€˜foo’ of undefined or null reference

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ null ΠΈΠ»ΠΈ undefined Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. НапримСр:

Как ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ: это Ρ‚ΠΎΠΆΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹Π·Π²Π°Π½ΠΎ ошибками. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядом со строкой, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Uncaught RangeError: Maximum call stack size exceeded

БвязанныС ошибки: Uncaught exception: RangeError: Maximum recursion depth exceeded, too much recursion, Stack overflow

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹Π·Π²Π°Π½ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ бСсконСчному Π²Ρ‹Π·ΠΎΠ²Ρƒ рСкурсивной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Как ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ рСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π½ΡƒΠ΄ΠΈΡ‚ΡŒ ΠΈΡ… Π΄Π΅Π»Π°Ρ‚ΡŒ рСкурсивныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π²Π΅Ρ‡Π½ΠΎ.

Uncaught URIError: URI malformed

БвязанныС ошибки: URIError: malformed URI sequence

Как ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ: ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ²Ρ‹ decodeURIComponent Π½Π° строкС ошибки ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

XMLHttpRequest cannot load some/url. No β€˜Access-Control-Allow-Origin’ header is present on the requested resource

БвязанныС ошибки: Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at some/url

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° всСгда связана с использованиСм XMLHttpRequest.

Как ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ: ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² коррСктности Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ URL ΠΈ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ удовлСтворяСт same-origin policy. Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ способ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ β€” ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° URL Π² сообщСнии ошибки ΠΈ Π½Π°ΠΉΡ‚ΠΈ Π΅Π³ΠΎ Π² своём ΠΊΠΎΠ΄Π΅.

InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable

БвязанныС ошибки: InvalidStateError, DOMException code 11

ΠžΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π²Ρ‹Π·Π²Π°Π» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ нСльзя Π±Ρ‹Π»ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ состоянии. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ связано c XMLHttpRequest ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π½Π° Π½Ρ‘ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎ Π΅Π³ΠΎ готовности.

Как ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ: посмотритС Π½Π° ΠΊΠΎΠ΄ Π² строкС, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ вызываСтся Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΈΠ»ΠΈ добавляСт Π½ΡƒΠΆΠ½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π΄ΠΎ этого (ΠΊΠ°ΠΊ с xhr.open ).

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

JavaScript содСрТит Π² сСбС ΠΎΠ΄Π½ΠΈ ΠΈΠ· самых бСсполСзных ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Π²ΠΈΠ΄Π΅Π», Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ‡Π°Π»ΡŒΠ½ΠΎ извСстной Expected T_PAAMAYIM_NEKUDOTAYIM Π² PHP. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠ»Π΅Π½Π½ΠΎΡΡ‚ΡŒ с ошибками привносит большС ясности. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ Ρ‚ΠΎΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ большС Π½Π΅ Π²Ρ‹Π΄Π°ΡŽΡ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ бСсполСзныС ошибки, ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅.

КакиС самыС нСпонятныС ошибки Π²Ρ‹ встрСчали? Π”Π΅Π»ΠΈΡ‚Π΅ΡΡŒ своими наблюдСниями Π² коммСнтариях.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

7 совСтов ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ undefined Π² JavaScript

7 совСтов ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ undefined Π² JavaScript

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ Π’Ρ‹ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Π½Π΅ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΉ Π½Π°ΠΌΠΈ ΡΡ‚Π°Ρ‚ΡŒΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ undefined Π² JavaScript

undefined являСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Богласно спСцификации ECMAScript, undefined Π² JavaScript ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ доступС ΠΊ Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ свойствам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ элСмСнтам массива, etc. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Как Π²ΠΈΠ΄ΠΈΠΌ, undefined выводится ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ доступа ΠΊ:

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ typeof Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку undefined для Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ значСния:

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ typeof ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ значСния undefined Π² JavaScript:

Как ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ undefined Π² JavaScript

НСинициализированная пСрСмСнная

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ способы Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

1. const ΠΈ let вмСсто var

ΠžΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ находятся Π² области видимости, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Π±Π»ΠΎΠΊΠΎΠΌ ΠΊΠΎΠ΄Π°, ΠΈ находятся Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΡ‘Ρ€Ρ‚Π²ΠΎΠΉ Π·ΠΎΠ½Π΅ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° присвоСния ΠΈΠΌ значСния.

ΠŸΡ€ΠΈ использовании нСизмСняСмых Π΄Π°Π½Π½Ρ‹Ρ… (констант) рСкомСндуСтся ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΊΠ°ΠΊ const :

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π° Π½Π΅ подвСргаСтся Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ, ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ undefined Π² этом случаС Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‚ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΡŒΡ‚Π΅ Π΅Ρ‘ ΠΊΠ°ΠΊ let ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ присваивайтС Π΅ΠΉ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° var Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² поднятии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…: Π³Π΄Π΅ Π±Ρ‹ Π½ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ объявлСниС, это Ρ€Π°Π²Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ объявили Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠΎΠ΄Π°.

Π’ этом случаС пСрСмСнная myVariable содСрТит undefined Π΄ΠΎ получСния значСния:

2. УсилСниС связности

Π‘Π²ΡΠ·Π½ΠΎΡΡ‚ΡŒ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΠ΅Ρ‚ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ взаимосвязи элСмСнтов модуля (пространства ΠΈΠΌΡ‘Π½, класса, ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π°). Бильная ΡΠ²ΡΠ·Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ элСмСнты модуля Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ„ΠΎΠΊΡƒΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ Π±Ρ‹Ρ‚ΡŒ:

undefined ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ скрипта. CouplingVsCohesion tips to handle undefinded in javascript. undefined ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ скрипта Ρ„ΠΎΡ‚ΠΎ. undefined ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ скрипта-CouplingVsCohesion tips to handle undefinded in javascript. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° undefined ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ скрипта. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° CouplingVsCohesion tips to handle undefinded in javascript. Новая Ρ€ΡƒΠ±Ρ€ΠΈΠΊΠ° β€” Β«Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки». Π‘ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ошибки Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΈ ΠΊΠ°ΠΊ с Π½ΠΈΠΌΠΈ Π±Ρ‹Ρ‚ΡŒ.

Π‘Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° сам ΠΏΠΎ сСбС ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ нСбольшим ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Π²Ρ‹Π³ΠΎΠ΄Ρƒ ΠΈΠ· прСимущСств сильной связности, Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±Π»ΠΈΠΆΠ΅ ΠΊ Π±Π»ΠΎΠΊΡƒ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚.

Π’ΠΎΡ‚ классичСский ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π΅ Π½Π°Π΄ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ:

Доступ ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ свойству

Π‘Π°ΠΌ ΠΏΠΎ сСбС доступ ΠΊ Π½Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π° Π²ΠΎΡ‚ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ свойства вывСдСтся ошибка:

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² особСнностях JavaScript: свойство ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ установлСно ΠΈΠ»ΠΈ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ. Π₯ΠΎΡ€ΠΎΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” установка ΠΏΡ€Π°Π²ΠΈΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ Π·Π°Π΄Π°Ρ‚ΡŒ свойствам значСния.

Но Π½Π΅ всСгда Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ приходится Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π’Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ свойств Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… сцСнариях, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

0 ΠΈ false β€” Π»ΠΎΠΆΠ½Ρ‹Π΅ значСния, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ if (toAppend.first)<> ΠΈ if (toAppend.last)<> фактичСски ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ с Π»ΠΎΠΆΠ½Ρ‹ΠΌΠΈ значСниями, ΠΈ эти элСмСнты Π½Π΅ Π²ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² массив. Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ исходный массив [10] Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

1. НаличиС свойства

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, JavaScript ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ мноТСство способов ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΈΠΌΠ΅Π΅Ρ‚ Π»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ свойство:

2. ДСструктуризация доступа ΠΊ свойствам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

ДСструктуризация ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° позволяСт ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ссли свойство Π½Π΅ сущСствуСт: ΡƒΠ΄ΠΎΠ±Π½ΠΎ для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ прямого ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π° с undefined :

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ прСимущСства дСструктуризации ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ quote() :

Π”Π΅ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ присваиваниС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ пустой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ссли Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ Π²ΠΎΠΎΠ±Ρ‰Π΅. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹ ΠΈΠ·Π±Π΅Π³Π°Π΅Ρ‚Π΅ возникновСния значСния undefined Π² JavaScript.

3. Бвойство ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Π•ΡΡ‚ΡŒ простой способ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΈ имя Π΅ΠΌΡƒ Spread syntax:

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Ѐункция, ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ количСством Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Π΅ значСния:

Π›ΡƒΡ‡ΡˆΠΈΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ являСтся использованиС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠ· ES2015:

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π’ΠΎ ΠΆΠ΅ происходит, Ссли return присутствуСт, Π½ΠΎ Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ выраТСния рядом:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Π½ΡƒΠΆΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ void

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ void выполняСт Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ undefined Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°:

Одним ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° void являСтся ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° выполнСния выраТСния ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ undefined Π² случаС возникновСния Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ undefined Π² массивах

Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ undefined ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ доступа ΠΊ элСмСнту массива с индСксом Π²Π½Π΅ ΠΏΡ€Π΅Π΄Π΅Π»ΠΎΠ² массива.

Π’ JavaScript Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ с Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌΠΈ Ρ€Π°Π·Ρ€Π΅ΠΆΡ‘Π½Π½Ρ‹ΠΌΠΈ массивами. Π­Ρ‚ΠΈ массивы ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… индСксах Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ элСмСнты. Когда Π΄Π΅Π»Π°Π΅ΠΌ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ пустому Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π² Ρ€Π°Π·Ρ€Π΅ΠΆΡ‘Π½Π½ΠΎΠΌ массивС, Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ undefined :

ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ null ΠΈ undefined Π² JavaScript

ОсновноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ undefined прСдставляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, которая Π΅Ρ‰Ρ‘ Π½Π΅ Π±Ρ‹Π»Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°, Π° null β€” Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎΠ΅ отсутствиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Допустим, пСрСмСнная number ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π°, Π½ΠΎ Π΅ΠΉ Π½Π΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

Π’ΠΎ ΠΆΠ΅ самоС ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ доступа ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ свойству ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:

Или пСрСмСнная Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π’ этом случаС null являСтся Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΌ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. НапримСр, clone() β€” это функция, которая ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ простой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ JavaScript. ΠžΠΆΠΈΠ΄Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ функция Π²Π΅Ρ€Π½Ρ‘Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚:

Π‘Ρ‚Ρ€ΠΎΠ³ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ равСнства === Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ undefined ΠΎΡ‚ null :

Π’Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ интСрСсна наша ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΡ€ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ошибок Π² JavaScript.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

БтратСгия Π±ΠΎΡ€ΡŒΠ±Ρ‹ с undefined Π² JavaScript:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Руководство ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ошибок Π² JavaScript

Ошибки β€” это Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Автор ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ сСгодня ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅ΠΌ, Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΡƒΠ²Π΅Ρ€Π΅Π½ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ эта идСя извСстна всСм. На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд ошибки каТутся Ρ‡Π΅ΠΌ-Ρ‚ΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½Ρ‹ΠΌ. Им ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ. Ошибка, сдСланная Π½Π° ΠΏΡƒΠ±Π»ΠΈΠΊΠ΅, Π²Ρ€Π΅Π΄ΠΈΡ‚ Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρƒ Ρ‚ΠΎΠ³ΠΎ, ΠΊΡ‚ΠΎ Π΅Ρ‘ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΠ». Но, ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ ошибки, ΠΌΡ‹ Π½Π° Π½ΠΈΡ… учимся, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, попадая Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π· Π² ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π½ΡŒΡˆΠ΅ Π²Π΅Π»ΠΈ сСбя Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π΄Π΅Π»Π°Π΅ΠΌ всё ΠΊΠ°ΠΊ Π½ΡƒΠΆΠ½ΠΎ.

undefined ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ скрипта. 9qdws5ejk1iibkjghqujq6m4c 4. undefined ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ скрипта Ρ„ΠΎΡ‚ΠΎ. undefined ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ скрипта-9qdws5ejk1iibkjghqujq6m4c 4. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° undefined ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ скрипта. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 9qdws5ejk1iibkjghqujq6m4c 4. Новая Ρ€ΡƒΠ±Ρ€ΠΈΠΊΠ° β€” Β«Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки». Π‘ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ошибки Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΈ ΠΊΠ°ΠΊ с Π½ΠΈΠΌΠΈ Π±Ρ‹Ρ‚ΡŒ.

Π’Ρ‹ΡˆΠ΅ ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ люди ΡΠΎΠ²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ. Ошибки Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ β€” это Π½Π΅Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅. БообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π½Π°ΠΌ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π½ΡƒΠΆΠ½ΠΎ вСсти сСбя для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ошибок большС Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΎ.

Π­Ρ‚ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π», посвящённый ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ошибок Π² JavaScript, Ρ€Π°Π·Π±ΠΈΡ‚ Π½Π° Ρ‚Ρ€ΠΈ части. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ сдСлаСм ΠΎΠ±Ρ‰ΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ систСмы ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок Π² JavaScript ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… ошибок. ПослС этого ΠΌΡ‹ ΠΏΠΎΠΈΡ‰Π΅ΠΌ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° вопрос ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с ошибками, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠΌΠΈ Π² сСрвСрном ΠΊΠΎΠ΄Π΅ (Π² частности, ΠΏΡ€ΠΈ использовании связки Node.js + Express.js). Π”Π°Π»Π΅Π΅ β€” обсудим ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ошибок Π² React.js. Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ здСсь Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ, Π²Ρ‹Π±Ρ€Π°Π½Ρ‹ ΠΏΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΈΡ… ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠΉ популярности. Однако рассматриваСмыС здСсь ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ошибками ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹, поэтому Π²Ρ‹, Π΄Π°ΠΆΠ΅ Ссли Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ Express ΠΈ React, Π±Π΅Π· Ρ‚Ρ€ΡƒΠ΄Π° смоТСтС ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠ·Π½Π°Π»ΠΈ, ΠΊ Ρ‚Π΅ΠΌ инструмСнтам, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅.

Код дСмонстрационного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π΅, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² этом Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

1. Ошибки Π² JavaScript ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ способы Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ

Если Π² вашСм ΠΊΠΎΠ΄Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ конструкциСй.

Π’ Ρ…ΠΎΠ΄Π΅ выполнСния этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ создан экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Error ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ сгСнСрировано (ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ говорят, Β«Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½ΠΎΒ») ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ с этим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ throw ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, содСрТащиС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ выраТСния. ΠŸΡ€ΠΈ этом Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ скрипта остановится Π² Ρ‚ΠΎΠΌ случаС, Ссли Π½Π΅ Π±Ρ‹Π»ΠΈ прСдприняты ΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ошибки.

β–ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Error

Π—Π΄Π΅ΡΡŒ, Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части, находится сообщСниС ΠΎΠ± ошибкС, Π·Π°Ρ‚Π΅ΠΌ слСдуСт ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎΡ‚ участок ΠΊΠΎΠ΄Π°, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹Π·Π²Π°Π»ΠΎ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΏΠΎΡ‚ΠΎΠΌ описываСтся Ρ‚ΠΎ мСсто, ΠΎΡ‚ΠΊΡƒΠ΄Π° Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½ этот сбойный участок. Π­Ρ‚ΠΎ продолТаСтся Π΄ΠΎ самого «дальнСго» ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ошибкС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π°.

▍ГСнСрированиС ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок

β–ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ try. catch

Π­Ρ‚ΠΎΡ‚ Π±Π»ΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π»ΡŽΠ±Ρ‹Ρ… ошибок, происходящих Π² синхронном ΠΊΠΎΠ΄Π΅. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

▍Блок finally

▍АсинхронныС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ β€” коллбэки

▍АсинхронныС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ β€” промисы

▍АсинхронныС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΈ try. catch

ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ ошибки Π² асинхронном ΠΊΠΎΠ΄Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² синхронном. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΏΡ€ΠΈ нСобходимости, Π² ΠΎΠ΄Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ catch ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ошибок.

2. Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок Π² сСрвСрном ΠΊΠΎΠ΄Π΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Π΅ΡΡ‚ΡŒ инструмСнты для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ошибками, посмотрим Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ с Π½ΠΈΠΌΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ситуациях. Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок β€” это ваТнСйший аспСкт сСрвСрного программирования. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ с ошибками. Π—Π΄Π΅ΡΡŒ Π±ΡƒΠ΄Π΅Ρ‚ продСмонстрирован ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ с использованиСм собствСнного конструктора для экзСмпляров ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Error ΠΈ ΠΊΠΎΠ΄ΠΎΠ² ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π²ΠΎ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ ΠΈΠ»ΠΈ Π»ΡŽΠ±Ρ‹ΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌ сСрвСрныС API. Как структурирован бэкСнд ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° β€” особого значСния Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ любом ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΈΠ΄Π΅ΠΈ, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ошибками.

Π’ качСствС сСрвСрного Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰Π΅Π³ΠΎ Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Express.js. ΠŸΠΎΠ΄ΡƒΠΌΠ°Π΅ΠΌ ΠΎ Ρ‚ΠΎΠΌ, какая структура Π½Π°ΠΌ Π½ΡƒΠΆΠ½Π° для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ эффСктивной систСмы ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок. Π˜Ρ‚Π°ΠΊ, Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ:

▍Разработка собствСнного конструктора ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ошибок

β–ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° наш ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ошибки Π³ΠΎΡ‚ΠΎΠ² ΠΊ использованию, Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ структуру ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ². Как Π±Ρ‹Π»ΠΎ сказано Π²Ρ‹ΡˆΠ΅, Π½Π°ΠΌ трСбуСтся Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ошибок, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ошибки для всСх ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ². По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Express.js Π½Π΅ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΡƒΡŽ схСму Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ всС Π΅Π³ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ инкапсулированы.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ с этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ собствСнный ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Благодаря Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρƒ, Ссли функция ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π° (ΠΈΠ»ΠΈ любая другая функция) выбрасываСт ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΎΠ½Π° ΠΏΠΎΠΏΠ°Π΄Ρ‘Ρ‚ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Ρ‘ клиСнтской части прилоТСния. ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ошибки Π½Π° сСрвСрС ΠΌΡ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΅Ρ‘ Π²ΠΎ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, полагая, Ρ‡Ρ‚ΠΎ для этого Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ JSON-API:

Если Π½Π° Π΄Π°Π½Π½ΠΎΠΌ этапС происходящиС каТСтся Π²Π°ΠΌ нСпонятным β€” Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡ‚Π΅ΡΡŒ β€” просто ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡ‚Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, ΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ‚Π΅ΠΌ, ΠΎ Ρ‡Ρ‘ΠΌ ΠΈΠ΄Ρ‘Ρ‚ Ρ€Π΅Ρ‡ΡŒ, ΠΈ постСпСнно Π²Ρ‹ Π²ΠΎ всём Ρ€Π°Π·Π±Π΅Ρ€Ρ‘Ρ‚Π΅ΡΡŒ. На самом Π΄Π΅Π»Π΅, Ссли Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΌ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ, здСсь примСняСтся ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ «свСрху-Π²Π½ΠΈΠ·Β», ΠΊΠΎΠ³Π΄Π° сначала ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΈΠ΄Π΅ΠΈ, Π° ΠΏΠΎΡ‚ΠΎΠΌ осущСствляСтся ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ частностям.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит ΠΊΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ².

ПолагаСм, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² ΠΊΠΎΠ΄Π΅ достаточно Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π΅Π³ΠΎ ΠΏΠΎΡΡΠ½ΡΡŽΡ‚. НадССмся, Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΡ… ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅, Ρ‡Π΅ΠΌ объяснСния ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π΄Π°Π½Π½Ρ‹Π΅ послС Π½Π΅Π³ΠΎ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ взглянСм Π½Π° Ρ„Π°ΠΉΠ» ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ².

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ CustomError ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΊ:

Π­Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ JSON-ΠΊΠΎΠ΄, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ Π²ΠΎ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΎΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΡ‚Ρ€ΡƒΠ΄ΠΈΠ»ΠΈΡΡŒ Π½Π°Π΄ сСрвСрной Ρ‡Π°ΡΡ‚ΡŒΡŽ прилоТСния, Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ большС Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ бСсполСзныС Π»ΠΎΠ³ΠΈ ошибок. ВмСсто этого ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ свСдСния ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ.

НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ здСсь Π»Π΅ΠΆΠΈΡ‚ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с рассматриваСмым здСсь ΠΊΠΎΠ΄ΠΎΠΌ. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΅Π³ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ, ΠΏΠΎΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с Π½ΠΈΠΌ, ΠΈ, Ссли Π½Π°Π΄ΠΎ, Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ Π½ΡƒΠΆΠ΄Ρ‹ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

3. Π Π°Π±ΠΎΡ‚Π° с ошибками Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΡˆΠ»Π° ΠΏΠΎΡ€Π° ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ Ρ‡Π°ΡΡ‚ΡŒ нашСй систСмы ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок, ΠΊΠ°ΡΠ°ΡŽΡ‰ΡƒΡŽΡΡ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π°. Π’ΡƒΡ‚ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ошибки, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ Π² клиСнтской части прилоТСния, Π° Π²ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, понадобится ΠΎΠΏΠΎΠ²Π΅Ρ‰Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… Π½Π° сСрвСрС. РазбСрёмся сначала с ΠΏΠΎΠΊΠ°Π·ΠΎΠΌ свСдСний ΠΎ сСрвСрных ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…. Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано, Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±ΡƒΠ΄Π΅Ρ‚ использована Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° React.

▍БохранСниС свСдСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² состоянии прилоТСния

Как ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅, ошибки ΠΈ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ, поэтому ΠΈΡ… ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π² состояниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². ΠŸΡ€ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ± ошибкС ΡΠ±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ΡΡ, поэтому, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π²ΠΈΠ΄ΠΈΡ‚ страницу, Ρ‚Π°ΠΌ сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅, с Ρ‡Π΅ΠΌ Π½Π°Π΄ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ошибки ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ стилС. По Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с сСрвСром, здСсь ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ 3 Ρ‚ΠΈΠΏΠ° ошибок.

Π—Π΄Π΅ΡΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ встроСнная Π² React систСма управлСния состояниСм прилоТСния, Π½ΠΎ, ΠΏΡ€ΠΈ нСобходимости, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ спСциализированными Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ для управлСния состояниСм β€” Ρ‚Π°ΠΊΠΈΠΌΠΈ, ΠΊΠ°ΠΊ MobX ΠΈΠ»ΠΈ Redux.

β–Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ошибки

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ сообщСния ΠΎ Ρ‚Π°ΠΊΠΈΡ… ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ высокого уровня, ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΌ состояниС. Они выводятся Π² статичСском элСмСнтС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ красноС ΠΏΠΎΠ»Π΅ Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части экрана, модальноС ΠΎΠΊΠ½ΠΎ ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. РСализация зависит ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит сообщСниС ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ошибкС.

undefined ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ скрипта. 1fb5d9c436f66a99bd3b14d07f543740. undefined ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ скрипта Ρ„ΠΎΡ‚ΠΎ. undefined ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ скрипта-1fb5d9c436f66a99bd3b14d07f543740. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° undefined ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ скрипта. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 1fb5d9c436f66a99bd3b14d07f543740. Новая Ρ€ΡƒΠ±Ρ€ΠΈΠΊΠ° β€” Β«Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки». Π‘ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ошибки Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΈ ΠΊΠ°ΠΊ с Π½ΠΈΠΌΠΈ Π±Ρ‹Ρ‚ΡŒ.

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎ глобальной ошибкС

На самом Π΄Π΅Π»Π΅, Π½Π° этом наш Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ ΠΎΠ± ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ошибок ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ. Π”Π°ΠΆΠ΅ Ссли Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΠΎΠ²Π΅Ρ‰Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎ спСцифичСских ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ просто ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ глобальноС состояниС, хранящСС ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ вывСсти ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС ΠΏΠΎΠ²Π΅Ρ€Ρ… страницы. Однако Ρ‚ΡƒΡ‚ ΠΌΡ‹ Π½Π΅ остановимся ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ спСцифичСских ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, это руководство ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ошибок ΠΈΠ½Π°Ρ‡Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΌ, Π° Π²ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния UX-спСциалистов, Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ сообщСния ΠΎΠ±ΠΎ всСх ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Ρ‚Π°ΠΊ, Π±ΡƒΠ΄Ρ‚ΠΎ всС ΠΎΠ½ΠΈ β€” Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅.

β–ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° спСцифичСских ошибок, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ запросов

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ спСцифичСского сообщСния ΠΎΠ± ошибкС, Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ пытаСтся ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π³ΠΎΡ€ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚Π°ΠΌ Π½Π΅Ρ‚.

undefined ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ скрипта. dee2f6bd1605d89c082a46f6feaa86b6. undefined ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ скрипта Ρ„ΠΎΡ‚ΠΎ. undefined ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ скрипта-dee2f6bd1605d89c082a46f6feaa86b6. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° undefined ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ скрипта. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° dee2f6bd1605d89c082a46f6feaa86b6. Новая Ρ€ΡƒΠ±Ρ€ΠΈΠΊΠ° β€” Β«Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки». Π‘ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ошибки Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΈ ΠΊΠ°ΠΊ с Π½ΠΈΠΌΠΈ Π±Ρ‹Ρ‚ΡŒ.

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎ спСцифичСской ошибкС

β–ΠžΡˆΠΈΠ±ΠΊΠΈ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ Π² клиСнтской части прилоТСния

Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано, для хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ Ρ‚Π°ΠΊΠΈΡ… ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ состояниС Ρ‚Π΅Ρ… ΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ спСцифичСским ошибкам, ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠΌ с сСрвСра. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΌΡ‹ позволяСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π½Π° сСрвСр запрос Π½Π° ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π³ΠΎΡ€ΠΎΠ΄Π° ΠΈΠ· Π±Π°Π·Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ тСкст. ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ ΠΈΠ»ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ тСкста Π² ΠΏΠΎΠ»Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ срСдствами клиСнтской части прилоТСния.

undefined ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ скрипта. 5325532f59efd4ff9ad92e2a33209d9f. undefined ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ скрипта Ρ„ΠΎΡ‚ΠΎ. undefined ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ скрипта-5325532f59efd4ff9ad92e2a33209d9f. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° undefined ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ скрипта. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 5325532f59efd4ff9ad92e2a33209d9f. Новая Ρ€ΡƒΠ±Ρ€ΠΈΠΊΠ° β€” Β«Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки». Π‘ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ошибки Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΈ ΠΊΠ°ΠΊ с Π½ΠΈΠΌΠΈ Π±Ρ‹Ρ‚ΡŒ.

Π’ ΠΏΠΎΠ»Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅Ρ‚, ΠΌΡ‹ сообщаСм ΠΎΠ± этом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ

β–Π˜Π½Ρ‚Π΅Ρ€Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… с использованиСм ΠΊΠΎΠ΄ΠΎΠ² ошибок

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, сСйчас Π²Ρ‹ Π·Π°Π΄Π°Ρ‘Ρ‚Π΅ΡΡŒ вопросом ΠΎ Ρ‚ΠΎΠΌ, Π·Π°Ρ‡Π΅ΠΌ Π½Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ ΠΊΠΎΠ΄Ρ‹ ошибок (Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ GENERIC ), Ссли ΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… с сСрвСра. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ, ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ роста ΠΈ развития прилоТСния, ΠΎΠ½ΠΎ, Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ Π½Π° ΠΌΠΈΡ€ΠΎΠ²ΠΎΠΉ Ρ€Ρ‹Π½ΠΎΠΊ, Π° это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ настанСт врСмя, ΠΊΠΎΠ³Π΄Π° создатСлям прилоТСния Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄ΡƒΠΌΠ°Ρ‚ΡŒΡΡ ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ ΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… языков. ΠšΠΎΠ΄Ρ‹ ошибок ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒ ΠΈΡ… Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ сообщСния ΠΎ Π½ΠΈΡ… Π½Π° языкС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ сайта.

Π˜Ρ‚ΠΎΠ³ΠΈ

НадССмся, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ошибками Π² Π²Π΅Π±-прилоТСниях. НСчто Π²Ρ€ΠΎΠ΄Π΅ console.error(err) слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Ρ… цСлях, Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, Π·Π°Π±Ρ‹Ρ‚Ρ‹Π΅ программистом, ΠΏΡ€ΠΎΠ½ΠΈΠΊΠ°Ρ‚ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹. Π£ΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ логирования использованиС ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ подходящСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ loglevel.

Π£Π²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ! Как Π²Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ ошибки Π² своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…?

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

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

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *