verify(/.../,

       ["ferret", "ferry", "ferrari"],

       ["ferrum", "transfer A"]);

verify(/.../,

       ["how delicious", "spacious room"],

       ["ruinous", "consciousness"]);

verify(/.../,

       ["bad punctuation ."],

       ["escape the dot"]);

verify(/.../,

       ["hottentottententen"],

       ["no", "hotten totten tenten"]);

verify(/.../,

       ["red platypus", "wobbling nest"],

       ["earth bed", "learning ape"]);

function verify(regexp, yes, no) {

  // Ignore unfinished exercises

  if (regexp.source == "...") return;

  yes.forEach(function(s) {

    if (!regexp.test(s))

      console.log("Не нашлось '" + s + "'");

  });

  no.forEach(function(s) {

    if (regexp.test(s))

      console.log("Неожиданное вхождение '" + s + "'");

  });

}

<p>Кавычки в тексте</p>

Допустим, вы написали рассказ, и везде для обозначения диалогов использовали одинарные кавычки. Теперь вы хотите заменить кавычки диалогов на двойные, и оставить одинарные в сокращениях слов типа aren’t.

Придумайте шаблон, различающий два этих использования кавычек, и напишите вызов метода replace, который производит замену.

<p>Снова числа</p>

Последовательности цифр можно найти простой регуляркой /\d+/.

Напишите выражение, находящее только числа, записанные в стиле JavaScript. Оно должно поддерживать возможный минус или плюс перед числом, десятичную точку, и экспоненциальную запись 5e-3 или 1E10 – опять-таки с возможными плюсом или минусом. Также заметьте, что до или после точки не обязательно могут стоять цифры, но при этом число не может состоять из одной точки. То есть, .5 или 5. – допустимые числа, а одна точка сама по себе – нет.

// Впишите сюда регулярку.

var number = /^...$/;

// Tests:

["1", "-1", "+15", "1.55", ".5", "5.", "1.3e2", "1E-4",

 "1e+12"].forEach(function(s) {

  if (!number.test(s))

    console.log("Не нашла '" + s + "'");

});

["1a", "+-1", "1.2.3", "1+1", "1e4.5", ".5.", "1f5",

 "."].forEach(function(s) {

  if (number.test(s))

    console.log("Неправильно принято '" + s + "'");

});

<p>10. Модули</p>

Начинающий программист пишет программы так, как муравьи строят муравейник – по кусочку, без размышления над общей структурой. Его программы как песок. Они могут недолго простоять, но вырастая, они разваливаются.

Поняв проблему, программист тратит много времени на размышления о структуре. Его программы получаются жёстко структурированными, как каменные изваяния. Они тверды, но когда их нужно менять, над ними приходится совершать насилие.

Мастер-программист знает, когда нужна структура, а когда нужно оставить вещи в простом виде. Его программы словно глина – твёрдые, но податливые.

Мастер Юан-Ма, «Книга программирования»

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

В случае больших программ отдельные функции уже теряются в коде, и нам необходима единица организации кода больших масштабов. Модули группируют программный код по каким-то определённым признакам. В этой главе мы рассмотрим преимущества такого деления и техники создания модулей в JavaScript.

<p>Зачем нужны модули</p>
Перейти на страницу:

Похожие книги