Дэвид Флэнаган - JavaScript. Подробное руководство, 6-е издание
- Название:JavaScript. Подробное руководство, 6-е издание
- Автор:
- Жанр:
- Издательство:Символ-Плюс
- Год:2012
- Город:СПб
- ISBN:978-5-93286-215-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Дэвид Флэнаган - JavaScript. Подробное руководство, 6-е издание краткое содержание
Эта книга - одновременно и руководство программиста, и полноценный справочник по базовому языку JavaScript и клиентским прикладным интерфейсам, предоставляемым веб-броузерами.
JavaScript. Подробное руководство, 6-е издание - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Если сам блок finally
передает управление с помощью инструкции return
, continue
, break
или throw
или путем вызова метода, генерирующего исключение, незаконченная команда на передачу управления отменяется и выполняется новая. Например, если блок finally
сгенерирует исключение, это исключение заменит любое ранее сгенерированное исключение. Если в блоке finally
имеется инструкция return
, произойдет нормальный выход из метода, даже если генерировалось исключение, которое не было обработано.
Конструкции try
и finally
могут использоваться вместе без конструкции сatch
. В этом случае блок finally
- это просто набор инструкций, выполняющих заключительные операции, который будет гарантированно выполнен независимо от наличия в блоке try
инструкции break
, continue
или return
. Напомню, из-за различий в работе инструкции continue
в разных циклах невозможно написать цикл while
, полностью имитирующий работу цикла for
. Однако если добавить инструкцию try/finally
, можно написать цикл while
, который будет действовать точно так же, как цикл for
, и корректно обрабатывать инструкцию continue
:
// Имитация цикла for( инициализация ; проверка ; инкремент ) тело цикла;
инициализация ;
while( проверка ) {
try { тело цикла ; }
finally { инкремент ; }
}
Обратите однако внимание, что тело цикла while
, содержащее инструкцию break
, будет вести себя несколько иначе (из-за выполнения лишней операции инкремента перед выходом), чем тело цикла for
, поэтому даже используя конструкцию finally
, невозможно точно сымитировать цикл for
с помощью цикла while
.
5.7. Прочие инструкции
В этом разделе описываются три остальные инструкции языка JavaScript - with
, debugger
и use strict
.
5.7.1. Инструкция with
В разделе 3.10.3 мы обсуждали область видимости переменных и цепочки областей видимости - список объектов, в которых выполняется поиск при разрешении имен переменных. Инструкция with
используется для временного изменения цепочки областей видимости. Она имеет следующий синтаксис:
with (объект) инструкция
Эта инструкция добавляет объект в начало цепочки областей видимости, выполняет инструкцию, а затем восстанавливает первоначальное состояние цепочки.
Инструкция with
не может использоваться в строгом режиме (раздел 5.7.3) и не рекомендуется к использованию в нестрогом режиме: избегайте ее использования по мере возможности. Программный код JavaScript, в котором используется инструкция with
, сложнее поддается оптимизации и наверняка будет работать медленнее, чем эквивалентный программный код без инструкции with
.
На практике инструкция with
упрощает работу с глубоко вложенными иерархиями объектов. В клиентском JavaScript вам наверняка придется вводить выражения, как показано ниже, чтобы обратиться к элементам HTML-формы:
document.forms[0].address.value
Если подобные выражения потребуется записать много раз, можно воспользоваться инструкцией with
, чтобы добавить объект формы в цепочку областей видимости:
with(document.forms[0]) {
// Далее следуют обращения к элементам формы непосредственно, например:
name.value = "";
address.value = "";
email.value = "";
}
Этот прием сокращает объем текста программы - больше не надо указывать фрагмент document.forms[0] перед каждым именем свойства. Этот объект представляет собой временную часть цепочки областей видимости и автоматически участвует в поиске, когда JavaScript требуется разрешить идентификаторы, такие как address. Избежать применения инструкции with
достаточно просто, если записать предыдущий пример, как показано ниже:
var f = document.fоrms[0];
f. name, value = "";
f.address.value = "";
f.email.value =" ";
Имейте в виду, что цепочка областей видимости используется только для поиска идентификаторов и не используется при их создании. Взгляните на следующий пример:
with(o) х = 1;
Если объект о имеет свойство х, то данный программный код присвоит значение 1 этому свойству. Но если х не является свойством объекта о, данный программный код выполнит то же действие, что и инструкция х = 1 без инструкции with. Он присвоит значение локальной или глобальной переменной с именем х или создаст новое свойство глобального объекта. Инструкция with
обеспечивает более короткую форму записи операций чтения свойств объекта о, но не создания новых свойств этого объекта.
5.7.2. Инструкция debugger
Инструкция debugger
обычно ничего не делает. Однако если имеется и запущена программа-отладчик, реализация JavaScript может (но не обязана) выполнять некоторые отладочные операции. Обычно эта инструкция действует подобно точке останова: интерпретатор JavaScript приостанавливает выполнение программного кода, и вы можете с помощью отладчика вывести значения переменных, ознакомиться с содержимым стека вызовов и т. д. Допустим, к примеру, что ваша функция f() порождает исключение, потому что она вызывается с неопределенным аргументом, а вы никак не можете определить, из какой точки программы производится этот вызов. Чтобы решить эту проблему, можно было бы изменить определение функции f (), чтобы она начиналась строкой, как показано ниже:
function f(o) {
if (о === undefined) debugger; // Временная строка для отладки
// Далее продолжается тело функции.
Теперь, когда f() будет вызвана без аргумента, ее выполнение будет приостановлено, и вы сможете воспользоваться отладчиком и просмотреть стек вызовов, чтобы отыскать место, откуда был выполнен некорректный вызов.
Официально инструкция debugger
была добавлена в язык стандартом ЕСМА-Script 5, но производители основных броузеров реализовали ее уже достаточно давно. Обратите внимание, что недостаточно иметь отладчик: инструкция debugger
не запускает отладчик автоматически. Однако, если отладчик уже запущен, эта инструкция будет действовать как точка останова. Если, к примеру, воспользоваться расширением Firebug для Firefox, это расширение должно быть активировано для веб-страницы, которую требуется отладить, и только в этом случае инструкция debugger
будет работать.
Интервал:
Закладка: