Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

let h = (f(x) for (x in g));

Используя генератор eachline из примера 11.1, можно реализовать отсечение пробельных символов, а также фильтрацию комментариев и пустых строк, как показано ниже:

let lines = eachline(text);

let trimmed = (l.trim for (1 in lines));

let nonblank = (1 for (1 in trimmed) if (1.length > 0 && 1[0]!='#'));

11.5. Краткая форма записи функций

В JavaScript 1.8 [24]

появилась возможность краткой записи простых функций (называется «лексическим замыканием»). Если функция вычисляет единственное выражение и возвращает его значение, ключевое слово

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

24

На момент написания этих строк данная особенность не поддерживалась в Rhino.

let succ = function(x) х+1, yes = function true, no = function false;

Это просто и удобно: функции, определяемые таким способом, ведут себя как обычные функции, в определении которых присутствуют фигурные скобки и ключевое слово

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

// Отсортировать массив в обратном порядке

data.sort(function(a,b) b-a);

// Определение функции, которая возвращает сумму квадратов элементов массива

let sumOfSquares = function(data)

Array.reduce(Array.map(data, function(x) x*x), function(x,y) x+y);

11.6. Множественные блоки catch

В JavaScript 1.5 инструкция

try/catch
была добавлена возможность использовать несколько блоков
catch
. Чтобы использовать эту возможность, необходимо, чтобы за именем параметра блока
catch
следовало ключевое слово
if
и условное выражение:

try {

// здесь могут возбуждаться исключения нескольких типов

throw 1;

}

catch(e if е instanceof ReferenceError) {

// Здесь обрабатывается исключение обращения к неопределенному имени

}

catch(e if е === "quit”) {

// Обработка исключения, получаемое в результате возбуждения сроки "quit"

}

catch(e if typeof e === "string") {

// Здесь обрабатываются все остальные строковые исключения

}

catch(e) {

// Здесь обрабатываются любые другие исключения

}

finally {

// Блок finally действует как обычно

}

Когда возникает какое-либо исключение, по очереди проверяются все блоки

catch
. Исключение присваивается именованному параметру блока
catch
и вычисляется условное выражение. Если оно возвращает
true
, выполняется тело этого блока
catch
, а все остальные блоки
catch
пропускаются. Если блок
catch
не имеет условного выражения, он ведет себя как блок с условным выражением
if true
и выполняется всегда, если перед ним не был встречен блок
catch
, удовлетворяющий условию. Если условное выражение присутствует во всех блоках
catch
и ни в одном из них условное выражение не вернуло
true
, исключение продолжит распространение как необработанное. Обратите внимание, что, поскольку условное выражение уже находится в круглых скобках блока
catch
, его не требуется еще раз заключать в скобки, как в обычных инструкциях
if
.

11.7. Е4Х: ECMAScript for XML

Расширение ECMAScript for XML, более известное как E4X, - это стандартное расширение [25] JavaScript, определяющее ряд мощных особенностей для обработки XML-документов. Расширение Е4Х поддерживается интерпретаторами Spider-monkey 1.5 и Rhino 1.6. Из-за того что оно не получило широкой поддержки у производителей броузеров, расширение Е4Х, вероятно, лучше относить к серверным технологиям, основанным на интерпретаторах Spidermonkey или Rhino.

25

Расширение Е4Х определяется стандартром ЕСМА-357. Официальную спецификацию можно найти по адресу: http//www.ecma-interational.org/publications/standarts/Ecma-357.htm

  • Читать дальше
  • 1
  • ...
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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