Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π½Π° JavaScriptΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 17

Автор ΠœΠ°Ρ€ΠΊ Кан

Условия ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² if, for ΠΈ while Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки. Π’Ρ‹Ρ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ "if x=5{" являСтся нСдопустимым, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ "x=5" Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки. Если с этим Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ EditPlus, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Ρ‹ скобок, ΠΈ Ρ‚.Π΄.

[x]. ΠŸΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ Π½Π΅ΠΏΠ°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ

Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ распространСнная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π² JavaScript Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ символом 'ΠΈΠ»ΠΈ " ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ символом. Если этот символ сущСствуСт Π² строкС, Ρ‚ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ экранирован. НапримСр, ΠΊΠΎΠ΄


var x = 'It's a beautiful day';


являСтся нСдопустимым, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ' Π² It's Π½Π΅ экранировано. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


var x = 'It\'s a beautiful day'; // ΠΈΠ»ΠΈ var x = "It's a beautiful day";


Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠΉ достаточно распространСнной ошибкой являСтся Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ строки Π΄Ρ€ΡƒΠ³ΠΈΠΌ символом, Ρ‚.Π΅.:


var x = "It's a beautiful day';


Π­Ρ‚Π° строка начинаСтся с символа ", поэтому Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΆΠ΅ символом ".

[x]. ΠŸΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° с запятой

Π₯отя Ρ‚ΠΎΡ‡ΠΊΠΈ с запятой ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Π² JavaScript, Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ всС ΠΆΠ΅ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. НапримСр, Ссли Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» JavaScript, Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ всС пСрСносы строк. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:


var x=5 var y=10


Если ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ пСрСносы строк, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΊΠΎΠ΄


var x=5 var y=10


ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Если Π±Ρ‹ использовались Ρ‚ΠΎΡ‡ΠΊΠΈ с запятой, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹.

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ ошибкам Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния. ПослС запуска ΠΊΠΎΠ΄Π° Π½Π° исполнСниС Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ ошибки Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния. Π­Ρ‚ΠΈ ошибки ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ Π² связи с мноТСством ΠΏΡ€ΠΈΡ‡ΠΈΠ½. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π΄Π°Π»Π΅Π΅ Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ:


alert(x); // 'x' Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ var x; x[5] = 'test'; // 'x' Π±ΡƒΠ΄Π΅Ρ‚ null ΠΈΠ»ΠΈ Π½Π΅ являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ window.frames = 5; // НС Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ var for; // оТидаСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ document.doesNotExist(5); // ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ это свойство ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ alert(parseInt('5')); // оТидаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚


МногиС ΠΈΠ· этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠΌΠΈ ошибками, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приходится Ρ€Π°Π·Ρ‹ΡΠΊΠΈΠ²Π°Ρ‚ΡŒ.

[x]. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС прописных Π±ΡƒΠΊΠ²

ВсС встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ JavaScript ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ записи ΠΈΠΌΠ΅Π½ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΡƒΡŽ, Ρ‡Ρ‚ΠΎ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ начинаСтся со строчной Π±ΡƒΠΊΠ²Ρ‹, Π° Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ слова Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ прописная Π±ΡƒΠΊΠ²Π°: parseInt, getElementById, createElement, appendChild, ΠΈ Ρ‚.Π΄.

Π’Π°ΠΊ ΠΊΠ°ΠΊ JavaScript ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ рСгистр символов, Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Π²ΠΎΠ΄ ΠΈΠΌΠ΅Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ часто Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ошибкС Π²ΠΎ врСмя выполнСния.

[x]. Бсылка Π½Π° Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ DOM

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² DOM. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ имССтся ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ измСняСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ элСмСнты Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π° страницС. Если дСлаСтся ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ этот ΠΊΠΎΠ΄ Π΄ΠΎ появлСния элСмСнтов Ρ„ΠΎΡ€ΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Ρ‚Π΅Π³ <HEAD>, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° ошибка JavaScript.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π»Π΅Π³ΠΊΠΎ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ. Π›ΡƒΡ‡ΡˆΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΏΠΎ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ onload, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


<BODY onload="loadFunction();">


ΠΈΠ»ΠΈ Π΅Ρ‰Π΅ Π»ΡƒΡ‡ΡˆΠ΅, присоСдинСниС события ΠΊ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Ρ‚Π΅Π»Π°:

document.captureEvents(Event.LOAD); document.onLoad=loadFunction;


[x]. ИспользованиС Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ слова

БущСствуСт Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ список Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов JavaScript. Если дСлаСтся ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… Π²Π½Π΅ ΠΈΡ… ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ контСкста, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, запись


var for = 5;


Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ошибка.

[x]. ИспользованиС ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°

ΠŸΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Если Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· этих Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Ρ‹ ΠΈ дСлаСтся ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ ошибки.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΎΠΊ ΠΈ просто ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ, Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎ Π½ΠΈΡ… Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ случайно Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

Однако послСдний Ρ‚ΠΈΠΏ ошибки ΠΈΠ· этого списка с ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ достаточно Π»Π΅Π³ΠΊΠΎ:


function myFunction(a, b, c){ if(a){ // выполняСтся Ρ€Π°Π±ΠΎΡ‚Π° с a } if(b && c){ // выполняСтся Ρ€Π°Π±ΠΎΡ‚Π° с b ΠΈ c } }


Если функция вызываСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚. Однако Π½Π°Π΄ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‰ΠΈ: Ссли входящая ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ пСрСмСнная ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΊΠ°ΠΊ false (0 ΠΈΠ»ΠΈ false), Ρ‚ΠΎ ΠΊΠΎΠ΄ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π’ связи с этим Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ пСрСмСнная Π½Π΅ Π±Ρ‹Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π°:


function myFunction(a, b, c){ if(typeof(a)!='undefined'){ // Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° с a } if((typeof(b)!='undefined') && (typeof(c)!='undefined')){ // Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° с b ΠΈ c } }


Π’ этом случаС, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π° ΠΊΠ°ΠΊ 0, false ΠΈΠ»ΠΈ null, ΠΊΠΎΠ΄ всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

БСйчас ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ ошибок - с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Try/Catch ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ window.onerror.

ΠžΡ‚ΠΊΡ€ΠΎΠ²Π΅Π½Π½ΠΎ говоря, функция window.onerror ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·Ρƒ. Π•Π΅ Ρ‡Π°Ρ‰Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ всСх сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π²ΠΎ врСмя выполнСния:


window.onerror = function(){ return true; }


Π‘ этим ΠΊΠΎΠ΄ΠΎΠΌ сообщСниС ΠΎΠ± ошибкС Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ. Однако Π² связи с этим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. НапримСр, Ссли Π±Ρ‹ пСрСмСнная Π±Ρ‹Π»Π° null ΠΈ с Π½Π΅ΠΉ Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° какая-Ρ‚ΠΎ опСрация, Ρ‚ΠΎ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ситуации Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ сообщСниС ΠΎΠ± ошибкС. ΠŸΡ€ΠΈ использовании этого ΠΊΠΎΠ΄Π° функция ΠΈΠ»ΠΈ сцСнарий Π² случаС возникновСния ошибки Π±ΡƒΠ΄Π΅Ρ‚ просто ΠΌΠΎΠ»Ρ‡Π° ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΡŽ window.onerror ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ нСсколько Π±ΠΎΠ»Π΅Π΅ друТСствСнных сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…. МоТно просто вывСсти, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сообщСниС 'ΠŸΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ошибка, ΡΠ²ΡΠΆΠΈΡ‚Π΅ΡΡŒ, поТалуйста, с Web-мастСром', вмСсто Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ всСх тСхничСских Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ошибки (Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ).

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ использованиС window.onerror состоит Π² ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ списка всСх ошибок, ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π΄ΡˆΠΈΡ… Π½Π° сайтС. МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ AJAX для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² Ρ„ΠΎΡ€ΠΌΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ·ΠΆΠ΅ ΠΈΡ… ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ. ВсС это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ нСявно, Π±Π΅Π· взаимодСйствия с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Try/Catch ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСсомнСнно Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнным ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΌ способом Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ошибок Π² JavaScript. Но Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ это - ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Try/Catch ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ½ΠΎΠ³Π΄Π° Π±Ρ‹Ρ‚ΡŒ СдинствСнным способом Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для создания Π² Internet Explorer ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° XMLHttp:


var activeXObjects = ['Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP']; for(var i=0; i<activeXObjects.length; i++){ try{ return new ActiveXObject(activeXObjects[i]); }catch(err){} }


Π—Π°Ρ€Π°Π½Π΅Π΅ нСизвСстно, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ установил ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, ΠΈ, ΠΊ соТалСнию, Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π΅ прСдоставляСт Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° это ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ остаСтся ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· 6 Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΠΎΠΊΠ° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… (Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π΄Π΅ΡΡ‚ΡŒΡΡ) Π½Π΅ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Try/Catch ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° ошибок Π΄Π²ΡƒΡ… Ρ‚ΠΈΠΏΠΎΠ²: ошибок Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΈ ошибок ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Ошибки Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния, ΠΊΠ°ΠΊ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚, ΠΊΠΎΠ³Π΄Π° Ρƒ компилятора JavaScript сущСствуСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с созданным ΠΊΠΎΠ΄ΠΎΠΌ. Ошибки ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π±ΡƒΠ΄ΡƒΡ‚ тСхничСски ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π² связи с контСкстом прилоТСния. Если имССтся ΠΏΠΎΠ»Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠ»ΠΆΠ΅Π½ ввСсти свой возраст, ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ -2, Ρ‚ΠΎ это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ появлСнию ошибки.

Π‘Π»ΠΎΠΊ Try/Catch ΠΈΠΌΠ΅Π΅Ρ‚ достаточно простой синтаксис:


try{ // ΠΊΠΎΠ΄ }catch(err){ // ΠΊΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибки }


Если ΠΊΠΎΠ΄ Π² Π±Π»ΠΎΠΊΠ΅ try ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкС, Ρ‚ΠΎ сцСнарий Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Π±Π»ΠΎΠΊ catch. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ошибки err Π² JavaScript ΠΈΠΌΠ΅Π΅Ρ‚ ряд ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… свойств - описаниС, сообщСниС, имя ΠΈ Π½ΠΎΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ:


try{ var x; x[5] = 5; }catch(err){ alert('An error occured: '+err.description); }


Если Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ catch окаТСтся ошибка, Ρ‚ΠΎ JavaScript смоТСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Π² дальнСйшСм ΠΊ Π΅Π΅ описанию.

Π’Π°ΠΊΠΎΠΉ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° Try/Catch ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² любом мСстС. Однако, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ написан Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, - Π² частности, вСсь Π²Π²ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒΡΡ.

Π‘Π»ΠΎΠΊ Try/Catch ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ для создания своих собствСнных ошибок: