Выбрать главу

  //Суммы платежей у правой границы

  g.textAling="right";      //Текст по правому краю

  g.textBaseLine="middle";  //Центрировать по вертикали

  var ticks = [monthly*payments, principal]; //Вывести две суммы

  var rightEdge = paymentToX(payments);      //Координата X на оси Y

  for (var i = 0; i < ticks.Length; i++) {   //Для каждой из 2 сумм

    var y = amountToY(ticks[i]);              //Определить координату Y

    g.fillRect(rightEdge - 3, y - 0.5, 3, 1); //Нарисовать метку

    g.fillText(String(ticks[i].toFixed(0)),    //И вывести рядом сумму.

              rightEdge-5, y);

  }

}

</script>

</body>

</html>

I

Базовый JavaScript

Данная часть книги включает главы со 2 по 12, она описывает базовый язык JavaScript и задумана как справочник по языку JavaScript. Прочитав главы этой части один раз, вы, возможно, будете неоднократно возвращаться к ним, чтобы освежить в памяти более сложные особенности языка.

• Глава 2 «Лексическая структура»

• Глава 3 «Типы данных, значения и переменные»

• Глава 4 «Выражения и операторы»

• Глава 5 «Инструкции»

• Глава 6 «Объекты»

• Глава 7 «Массивы»

• Глава 8 «Функции»

• Глава 9 «Классы и модули»

• Глава 10 «Шаблоны и регулярные выражения»

• Глава 11 «Подмножества и расширения JavaScript»

• Глава 12 «Серверный JavaScript»

2

Лексическая структура

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

2.1. Набор символов

При написании программ на JavaScript используется набор символов Юникода. Юникод является надмножеством кодировок ASCII и Latin-І и поддерживает практически все письменные языки, имеющиеся на планете. Стандарт ЕСМА-Script 3 требует, чтобы реализации JavaScript обеспечивали поддержку стандарта Юникода версии 2.1 или выше, а стандарт ECMAScript 5 требует, чтобы реализации обеспечивали поддержку стандарта Юникода версии 3 или выше. Более подробно о Юникоде и JavaScript говорится во врезке в разделе 3.2.

2.1.1. Чувствительность к регистру

JavaScript - это язык, чувствительный к регистру символов. Это значит, что ключевые слова, имена переменных и функций и любые другие идентификаторы языка должны всегда содержать одинаковые наборы прописных и строчных букв. Например, ключевое слово while должно набираться как «while», а не «While» или «WHILE». Аналогично online, Online, OnLine и ONLINE - это имена четырех разных переменных.

Заметим, однако, что язык разметки HTML (в отличие от XHTML) не чувствителен к регистру. Так как HTML и клиентский JavaScript тесно связаны, это различие может привести к путанице. Многие JavaScript-объекты и их свойства имеют те же имена, что и теги и атрибуты языка HTML, которые они обозначают. Однако если в HTML эти теги и атрибуты могут набираться в любом регистре, то в JavaScript они обычно должны набираться строчными буквами. Например, атрибут onclick обработчика события чаще всего задается в HTML как onClick, однако в JavaScript-коде (или в XHTML-документе) он должен быть обозначен как onclick.

2.1.2. Пробелы, переводы строк и символы управления форматом

JavaScript игнорирует пробелы, которые могут присутствовать между лексемами в программе. Кроме того, JavaScript также по большей части игнорирует символы перевода строки (за одним исключением, о котором рассказывается в разделе 2.5). Поэтому пробелы и символы перевода строки могут без ограничений использоваться в исходных текстах программ для форматирования и придания им удобочитаемого внешнего вида.

Помимо обычного символа пробела (\u0020) JavaScript дополнительно распознает как пробельные следующие символы: табуляция (\u0009), вертикальная табуляция (\u000В), перевод формата (\u000C), неразрывный пробел (\u00А0), маркер порядка следования байтов (\uFEFF), а также все символы Юникода, относящиеся к категории Zs. Следующие символы распознаются интерпретаторами JavaScript как символы конца строки: перевод строки (\u000А), возврат каретки (\u000D), разделитель строк (\u2028) и разделитель абзацев (\u2029). Последовательность из символов возврата каретки и перевода строки интерпретируется как единственный символ завершения строки.