Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

Наконец, обратите внимание, что инструкция

break
, с меткой или без нее, не может передавать управление через границы функций. Например, нельзя пометить инструкцию объявления функции и затем использовать эту метку внутри функции.

5.6.3. Инструкция continue

Инструкция

continue
схожа с инструкцией
break
. Однако вместо выхода из цикла инструкция
continue
запускает новую итерацию цикла. Синтаксис инструкции
continue
столь же прост, как и синтаксис инструкции
break
:

continue;

Инструкция

continue
может также использоваться с меткой:

continue имя_метки\

Инструкция

continue
, как в форме без метки, так и с меткой, может использоваться только в теле цикла. Использование ее в любых других местах приводит к синтаксической ошибке.

Когда выполняется инструкция

continue
, текущая итерация цикла прерывается и начинается следующая. Для разных типов циклов это означает разное:

• В цикле

while
указанное в начале цикла выражение проверяется снова, и если оно равно
true
, тело цикла выполняется с начала.

• В цикле

do/while
происходит переход в конец цикла, где перед повторным выполнением цикла снова проверяется условие.

• В цикле

for
вычисляется выражение инкремента и снова вычисляется выражение проверки, чтобы определить, следует ли выполнять следующую итерацию.

• В цикле

for/in
цикл начинается заново с присвоением указанной переменной имени следующего свойства.

Обратите внимание на различия в поведении инструкции

continue
в циклах
while
и
for
: цикл
while
возвращается непосредственно к своему условию, а цикл
for
сначала вычисляет выражение инкремента, а затем возвращается к условию. Ранее при обсуждении цикла
for
объяснялось поведение цикла
for
в терминах «эквивалентного» цикла
while
. Поскольку инструкция
continue
ведет себя в этих двух циклах по-разному, точно имитировать цикл
for
с помощью одного цикла
while
невозможно.

В следующем примере показано использование инструкции

continue
без метки для выхода из текущей итерации цикла в случае ошибки:

for(i = 0; 1 < data.length; i++) {

if (!data[і]) continue; // He обрабатывать неопределенные данные

total += data[i];

}

Инструкция

continue
, как и
break
, может применяться во вложенных циклах в форме, включающей метку, и тогда заново запускаемым циклом необязательно будет цикл, непосредственно содержащий инструкцию
continue
. Кроме того, как и для инструкции
break
, переводы строк между ключевым словом continue и именем метки не допускаются.

5.6.4. Инструкция return

Как вы помните, вызов функции является выражением и подобно всем выражениям имеет значение. Инструкция

return
внутри функций служит для определения значения, возвращаемого функцией. Инструкция
return
имеет следующий синтаксис:

return выражение;

Инструкция

return
может располагаться только в теле функции. Присутствие ее в любом другом месте является синтаксической ошибкой. Когда выполняется инструкция
return
, функция возвращает значение выражения вызывающей программе. Например:

function square(x) { return х*х; } // Функция с инструкцией return

square(2) // Этот вызов вернет 4

Если функция не имеет инструкции return, при ее вызове интерпретатор будет выполнять инструкции в теле функции одну за другой, пока не достигнет конца функции, и затем вернет управление вызвавшей ее программе. В этом случае выражение вызова вернет значение

undefined
. Инструкция
return
часто является последней инструкцией в функции, но это совершенно необязательно: функция вернет управление вызывающей программе, как только будет достигнута инструкция
return
, даже если за ней следуют другие инструкции в теле функции.

Инструкция

return
может также использоваться без выражения, тогда она просто прерывает выполнение функции и возвращает значение
undefined
вызывающей программе. Например:

function display_object(o) {

// Сразу же вернуть управление, если аргумент имеет значение null или undefined

if (!о) return;

// Здесь находится оставшаяся часть функции...

}

Из-за того что интерпретатор JavaScript автоматически вставляет точки с запятой, нельзя разделять переводом строки инструкцию

return
и следующее за ней выражение.

5.6.5. Инструкция throw

Исключение - это сигнал, указывающий на возникновение какой-либо исключительной ситуации или ошибки. Возбуждение исключения (

throw
) - это способ просигнализировать о такой ошибке или исключительной ситуации. Перехватить исключение (
catch
) - значит обработать его, т. е. предпринять действия, необходимые или подходящие для восстановления после исключения. В JavaScript исключения возбуждаются в тех случаях, когда возникает ошибка времени выполнения и когда программа явно возбуждает его с помощью инструкции
throw
. Исключения перехватываются с помощью инструкции
try/catch/finally
, которая описана в следующем разделе.

Инструкция

throw
имеет следующий синтаксис:

throw выражение;

Результатом выражения может быть значение любого типа. Инструкции throw можно передать число, представляющее код ошибки, или строку, содержащую текст сообщения об ошибке. Интерпретатор JavaScript возбуждает исключения, используя экземпляр класса

Error
одного из его подклассов, и вы также можете использовать подобный подход. Объект
Error
имеет свойство
name
, определяющее тип ошибки, и свойство
message
, содержащее строку, переданную функции-конструктору (смотрите описание класса
Error
в справочном разделе). Ниже приводится пример функции, которая возбуждает объект
Error
при вызове с недопустимым аргументом:

Поделиться:
Популярные книги

Ну, здравствуй, перестройка!

Иванов Дмитрий
4. Девяностые
Фантастика:
попаданцы
альтернативная история
6.83
рейтинг книги
Ну, здравствуй, перестройка!

Орден Багровой бури. Книга 1

Ермоленков Алексей
1. Орден Багровой бури
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Орден Багровой бури. Книга 1

Мастер 8

Чащин Валерий
8. Мастер
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Мастер 8

Неправильный лекарь. Том 1

Измайлов Сергей
1. Неправильный лекарь
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Неправильный лекарь. Том 1

Первый среди равных. Книга IX

Бор Жорж
9. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Первый среди равных. Книга IX

Лейтенант. Часть 2. Назад в СССР

Гаусс Максим
9. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Лейтенант. Часть 2. Назад в СССР

Студент из прошлого тысячелетия

Еслер Андрей
2. Соприкосновение миров
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Студент из прошлого тысячелетия

Я Гордый Часть 3

Машуков Тимур
3. Стальные яйца
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я Гордый Часть 3

Эволюционер из трущоб. Том 2

Панарин Антон
2. Эволюционер из трущоб
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Эволюционер из трущоб. Том 2

Ученик. Книга третья

Первухин Андрей Евгеньевич
3. Ученик
Фантастика:
фэнтези
7.64
рейтинг книги
Ученик. Книга третья

Изгой Проклятого Клана. Том 2

Пламенев Владимир
2. Изгой
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Изгой Проклятого Клана. Том 2

Неудержимый. Книга XXVI

Боярский Андрей
26. Неудержимый
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Неудержимый. Книга XXVI

Сержант. Назад в СССР. Книга 4

Гаусс Максим
4. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сержант. Назад в СССР. Книга 4

Страж Кодекса

Романов Илья Николаевич
1. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Страж Кодекса